{
    "contractName": "PairATokenV2",
    "abi": [
        {
            "stateMutability": "payable",
            "type": "receive"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "input",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "output",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "swap",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amountIn",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "getOutputAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amountOut",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getOutputAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"input\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"output\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/swappa/PairATokenV2.sol\":\"PairATokenV2\"},\"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/interfaces/aave-v2/DataTypes.sol\":{\"keccak256\":\"0x35feb5ee89753eb65b58120e08024d86ddbb8e70c3a6da3bb417dcdb1a409dc8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://485a1255879f39d88f17a5a918cde49f19841cab452594034c9276824c4e6dfd\",\"dweb:/ipfs/QmSNuscUnMdGH9HUM25Z63PASa4EmUsuLMthHTuPYaAvKb\"]},\"project:/contracts/interfaces/aave-v2/ILendingPoolV2.sol\":{\"keccak256\":\"0xed59c2ca273f60ed1e9ad7a1e85aeef9007753f3d554bdb8059382c61bb30545\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddc5ad0b6c36fabd77885677a99cb9b4b322f3e7314ae26b25f0482c5a052e99\",\"dweb:/ipfs/QmRk6rr9cu4eM4SrZoDeFUDwoZRTfvy5jcLx4e8hzNQ4ha\"]},\"project:/contracts/swappa/ISwappaPairV1.sol\":{\"keccak256\":\"0x3ad68981bda91ed83c5e9ee8617f08bb5e208208477fb755cc77077f127010ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e4390b1bebc39f58bff34b9099a646ead67cef27b722ef61548487251cca719\",\"dweb:/ipfs/QmRWEuYyjHaS957VKWtTfDpzfqkXb2bvEsS33meAC76ZuU\"]},\"project:/contracts/swappa/PairATokenV2.sol\":{\"keccak256\":\"0x04d6ca504133ca3555dd163b02a5fc0eb8f29ad60495811a087b17381fb8bd89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f552d7279b97cfaa9e2cc218f6cc4fb83f0a6e1d0e0fd95e2e9768281356f24\",\"dweb:/ipfs/QmY71UJEd1BkW2tb1iVRVkypjgVocNXmvVrGHKP6yBEhXM\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b506105fd806100206000396000f3fe60806040526004361061002d5760003560e01c806332ef8314146100395780637eace892146100e657610034565b3661003457005b600080fd5b34801561004557600080fd5b506100e46004803603608081101561005c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100a557600080fd5b8201836020820111156100b757600080fd5b803590602001918460018302840111640100000000831117156100d957600080fd5b5090925090506101a2565b005b3480156100f257600080fd5b506101906004803603608081101561010957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561015157600080fd5b82018360208201111561016357600080fd5b8035906020019184600183028401116401000000008311171561018557600080fd5b509092509050610525565b60408051918252519081900360200190f35b6000806101e484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061052e92505050565b9150915060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d602081101561029157600080fd5b50519050600160ff8316141561035457604080517f69328dec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820184905288811660448301529151918516916369328dec916064808201926020929091908290030181600087803b15801561032257600080fd5b505af1158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b5061051b9050565b8160ff166002141561051b578773ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103e757600080fd5b505af11580156103fb573d6000803e3d6000fd5b505050506040513d602081101561041157600080fd5b505161047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5061697241546f6b656e56323a20617070726f7665206661696c656421000000604482015290519081900360640190fd5b604080517fe8eda9df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201849052888116604483015260006064830181905292519086169263e8eda9df926084808201939182900301818387803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050505b5050505050505050565b50909392505050565b60008082516015146105a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5061697241546f6b656e56323a20696e76616c69642064617461210000000000604482015290519081900360640190fd5b826014815181106105ae57fe5b0160200151601493909301519360f89390931c9291505056fea2646970667358221220ee501f8b52c9cf6458aacff35f69836ee7b7c443860f18b70c1b1c1d3f10ee1364736f6c63430006080033",
    "deployedBytecode": "0x60806040526004361061002d5760003560e01c806332ef8314146100395780637eace892146100e657610034565b3661003457005b600080fd5b34801561004557600080fd5b506100e46004803603608081101561005c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100a557600080fd5b8201836020820111156100b757600080fd5b803590602001918460018302840111640100000000831117156100d957600080fd5b5090925090506101a2565b005b3480156100f257600080fd5b506101906004803603608081101561010957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561015157600080fd5b82018360208201111561016357600080fd5b8035906020019184600183028401116401000000008311171561018557600080fd5b509092509050610525565b60408051918252519081900360200190f35b6000806101e484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061052e92505050565b9150915060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d602081101561029157600080fd5b50519050600160ff8316141561035457604080517f69328dec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820184905288811660448301529151918516916369328dec916064808201926020929091908290030181600087803b15801561032257600080fd5b505af1158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b5061051b9050565b8160ff166002141561051b578773ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103e757600080fd5b505af11580156103fb573d6000803e3d6000fd5b505050506040513d602081101561041157600080fd5b505161047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5061697241546f6b656e56323a20617070726f7665206661696c656421000000604482015290519081900360640190fd5b604080517fe8eda9df00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201849052888116604483015260006064830181905292519086169263e8eda9df926084808201939182900301818387803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050505b5050505050505050565b50909392505050565b60008082516015146105a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5061697241546f6b656e56323a20696e76616c69642064617461210000000000604482015290519081900360640190fd5b826014815181106105ae57fe5b0160200151601493909301519360f89390931c9291505056fea2646970667358221220ee501f8b52c9cf6458aacff35f69836ee7b7c443860f18b70c1b1c1d3f10ee1364736f6c63430006080033",
    "immutableReferences": {},
    "sourceMap": "246:1082:48:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;246:1082:48;;;;;;;",
    "deployedSourceMap": "246:1082:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;315:571:48;;5:9:-1;2:2;;;27:1;24;17:12;2:2;315:571:48;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;315:571:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;315:571:48;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;315:571:48;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;315:571:48;;-1:-1:-1;315:571:48;-1:-1:-1;315:571:48;:::i;:::-;;1143:151;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1143:151:48;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1143:151:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1143:151:48;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1143:151:48;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1143:151:48;;-1:-1:-1;1143:151:48;-1:-1:-1;1143:151:48;:::i;:::-;;;;;;;;;;;;;;;;315:571;427:16;445:15;464;474:4;;464:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;464:9:48;;-1:-1:-1;;;464:15:48:i;:::-;426:53;;;;483:16;508:5;502:22;;;533:4;502:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;502:37:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;502:37:48;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;502:37:48;;-1:-1:-1;560:1:48;547:14;;;;543:340;;;596:58;;;;;;:33;:58;;;;;;;;;;;;;;;;;;;;;;:33;;;;;;:58;;;;;;;;;;;;;;;-1:-1:-1;596:33:48;:58;;;2:2:-1;;;;27:1;24;17:12;2:2;596:58:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;596:58:48;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;543:340:48;;-1:-1:-1;543:340:48;;669:9;:14;;682:1;669:14;665:218;;;737:5;731:20;;;752:8;762:11;731:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;731:43:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;731:43:48;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;731:43:48;718:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;817:61;;;;;;:32;:61;;;;;;;;;;;;;;;;;;;;874:3;817:61;;;;;;;;:32;;;;;;:61;;;;;;;;;;;874:3;817:32;:61;;;2:2:-1;;;;27:1;24;17:12;2:2;817:61:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;817:61:48;;;;665:218;315:571;;;;;;;;:::o;1143:151::-;-1:-1:-1;1282:8:48;;1143:151;-1:-1:-1;;;1143:151:48:o;889:251::-;949:16;967:15;996:4;:11;1011:2;996:17;988:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1067:4;1072:2;1067:8;;;;;;;;;;;;1127:2;1117:13;;;;1111:20;;1067:8;;;;;;1091:46;-1:-1:-1;;1091:46:48:o",
    "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.8;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"../interfaces/aave-v2/ILendingPoolV2.sol\";\nimport \"./ISwappaPairV1.sol\";\n\ncontract PairATokenV2 is ISwappaPairV1 {\n\tusing SafeMath for uint;\n\n\tfunction swap(\n\t\taddress input,\n\t\taddress output,\n\t\taddress to,\n\t\tbytes calldata data\n\t) external override {\n\t\t(address poolAddr, uint8 inputType) = parseData(data);\n\t\tuint inputAmount = ERC20(input).balanceOf(address(this));\n\t\tif (inputType == 1) {\n\t\t\t// AToken -> Underlying.\n\t\t\tILendingPoolV2(poolAddr).withdraw(output, inputAmount, to);\n\t\t} else if (inputType == 2) {\n\t\t\t// Underlying -> AToken.\n\t\t\trequire(\n\t\t\t\tERC20(input).approve(poolAddr, inputAmount),\n\t\t\t\t\"PairATokenV2: approve failed!\");\n\t\t\tILendingPoolV2(poolAddr).deposit(input, inputAmount, to, 0x0);\n\t\t}\n\t}\n\n\tfunction parseData(bytes memory data) private pure returns (address poolAddr, uint8 inputType) {\n\t\trequire(data.length == 21, \"PairATokenV2: invalid data!\");\n\t\tinputType = uint8(data[20]);\n    assembly {\n      poolAddr := mload(add(data, 20))\n    }\n\t}\n\n\tfunction getOutputAmount(\n\t\taddress,\n\t\taddress,\n\t\tuint amountIn,\n\t\tbytes calldata\n\t) external override returns (uint amountOut) {\n\t\treturn amountIn;\n\t}\n\n\treceive() external payable {}\n}",
    "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/swappa/PairATokenV2.sol",
    "ast": {
        "absolutePath": "project:/contracts/swappa/PairATokenV2.sol",
        "exportedSymbols": {
            "PairATokenV2": [
                5712
            ]
        },
        "id": 5713,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 5580,
                "literals": [
                    "solidity",
                    "0.6",
                    ".8"
                ],
                "nodeType": "PragmaDirective",
                "src": "32:22:48"
            },
            {
                "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
                "file": "@openzeppelin/contracts/math/SafeMath.sol",
                "id": 5581,
                "nodeType": "ImportDirective",
                "scope": 5713,
                "sourceUnit": 219,
                "src": "56:51:48",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 5582,
                "nodeType": "ImportDirective",
                "scope": 5713,
                "sourceUnit": 726,
                "src": "108:55:48",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/aave-v2/ILendingPoolV2.sol",
                "file": "../interfaces/aave-v2/ILendingPoolV2.sol",
                "id": 5583,
                "nodeType": "ImportDirective",
                "scope": 5713,
                "sourceUnit": 1091,
                "src": "164:50:48",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
                "file": "./ISwappaPairV1.sol",
                "id": 5584,
                "nodeType": "ImportDirective",
                "scope": 5713,
                "sourceUnit": 5326,
                "src": "215:29:48",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "arguments": null,
                        "baseName": {
                            "contractScope": null,
                            "id": 5585,
                            "name": "ISwappaPairV1",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5325,
                            "src": "271:13:48",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISwappaPairV1_$5325",
                                "typeString": "contract ISwappaPairV1"
                            }
                        },
                        "id": 5586,
                        "nodeType": "InheritanceSpecifier",
                        "src": "271:13:48"
                    }
                ],
                "contractDependencies": [
                    5325
                ],
                "contractKind": "contract",
                "documentation": null,
                "fullyImplemented": true,
                "id": 5712,
                "linearizedBaseContracts": [
                    5712,
                    5325
                ],
                "name": "PairATokenV2",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 5589,
                        "libraryName": {
                            "contractScope": null,
                            "id": 5587,
                            "name": "SafeMath",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 218,
                            "src": "294:8:48",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_SafeMath_$218",
                                "typeString": "library SafeMath"
                            }
                        },
                        "nodeType": "UsingForDirective",
                        "src": "288:24:48",
                        "typeName": {
                            "id": 5588,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "307:4:48",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "baseFunctions": [
                            5311
                        ],
                        "body": {
                            "id": 5661,
                            "nodeType": "Block",
                            "src": "422:464:48",
                            "statements": [
                                {
                                    "assignments": [
                                        5602,
                                        5604
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 5602,
                                            "mutability": "mutable",
                                            "name": "poolAddr",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 5661,
                                            "src": "427:16:48",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 5601,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "427:7:48",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 5604,
                                            "mutability": "mutable",
                                            "name": "inputType",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 5661,
                                            "src": "445:15:48",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            },
                                            "typeName": {
                                                "id": 5603,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "445:5:48",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 5608,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 5606,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5597,
                                                "src": "474:4:48",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 5605,
                                            "name": "parseData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5690,
                                            "src": "464:9:48",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint8_$",
                                                "typeString": "function (bytes memory) pure returns (address,uint8)"
                                            }
                                        },
                                        "id": 5607,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "464:15:48",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_address_$_t_uint8_$",
                                            "typeString": "tuple(address,uint8)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "426:53:48"
                                },
                                {
                                    "assignments": [
                                        5610
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 5610,
                                            "mutability": "mutable",
                                            "name": "inputAmount",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 5661,
                                            "src": "483:16:48",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 5609,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "483:4:48",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 5620,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 5617,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "533:4:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_PairATokenV2_$5712",
                                                            "typeString": "contract PairATokenV2"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_PairATokenV2_$5712",
                                                            "typeString": "contract PairATokenV2"
                                                        }
                                                    ],
                                                    "id": 5616,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "525:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 5615,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "525:7:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": null,
                                                            "typeString": null
                                                        }
                                                    }
                                                },
                                                "id": 5618,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "525:13:48",
                                                "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": 5612,
                                                        "name": "input",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5591,
                                                        "src": "508:5:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 5611,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 725,
                                                    "src": "502:5:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 5613,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "502:12:48",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$725",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 5614,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "balanceOf",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 325,
                                            "src": "502:22:48",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                "typeString": "function (address) view external returns (uint256)"
                                            }
                                        },
                                        "id": 5619,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "502:37:48",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "483:56:48"
                                },
                                {
                                    "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        },
                                        "id": 5623,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 5621,
                                            "name": "inputType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5604,
                                            "src": "547:9:48",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 5622,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "560:1:48",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                        },
                                        "src": "547:14:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            },
                                            "id": 5636,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 5634,
                                                "name": "inputType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5604,
                                                "src": "669:9:48",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 5635,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "682:1:48",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                            },
                                            "src": "669:14:48",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseBody": null,
                                        "id": 5659,
                                        "nodeType": "IfStatement",
                                        "src": "665:218:48",
                                        "trueBody": {
                                            "id": 5658,
                                            "nodeType": "Block",
                                            "src": "685:198:48",
                                            "statements": [
                                                {
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                            {
                                                                "argumentTypes": null,
                                                                "arguments": [
                                                                    {
                                                                        "argumentTypes": null,
                                                                        "id": 5642,
                                                                        "name": "poolAddr",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5602,
                                                                        "src": "752:8:48",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "argumentTypes": null,
                                                                        "id": 5643,
                                                                        "name": "inputAmount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5610,
                                                                        "src": "762:11:48",
                                                                        "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": 5639,
                                                                                "name": "input",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5591,
                                                                                "src": "737:5:48",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 5638,
                                                                            "name": "ERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 725,
                                                                            "src": "731:5:48",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                                                                "typeString": "type(contract ERC20)"
                                                                            }
                                                                        },
                                                                        "id": 5640,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "731:12:48",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_ERC20_$725",
                                                                            "typeString": "contract ERC20"
                                                                        }
                                                                    },
                                                                    "id": 5641,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "approve",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 385,
                                                                    "src": "731:20:48",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                    }
                                                                },
                                                                "id": 5644,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "731:43:48",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            {
                                                                "argumentTypes": null,
                                                                "hexValue": "5061697241546f6b656e56323a20617070726f7665206661696c656421",
                                                                "id": 5645,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "string",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "780:31:48",
                                                                "subdenomination": null,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_stringliteral_26f2ea7d83f4368762647d0316760dbb5a2b1cc0de3256f9bd0be82a3934e543",
                                                                    "typeString": "literal_string \"PairATokenV2: approve failed!\""
                                                                },
                                                                "value": "PairATokenV2: approve failed!"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_26f2ea7d83f4368762647d0316760dbb5a2b1cc0de3256f9bd0be82a3934e543",
                                                                    "typeString": "literal_string \"PairATokenV2: approve failed!\""
                                                                }
                                                            ],
                                                            "id": 5637,
                                                            "name": "require",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "src": "718:7:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                "typeString": "function (bool,string memory) pure"
                                                            }
                                                        },
                                                        "id": 5646,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "718:94:48",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 5647,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "718:94:48"
                                                },
                                                {
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                            {
                                                                "argumentTypes": null,
                                                                "id": 5652,
                                                                "name": "input",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5591,
                                                                "src": "850:5:48",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "argumentTypes": null,
                                                                "id": 5653,
                                                                "name": "inputAmount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5610,
                                                                "src": "857:11:48",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            {
                                                                "argumentTypes": null,
                                                                "id": 5654,
                                                                "name": "to",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5595,
                                                                "src": "870:2:48",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "argumentTypes": null,
                                                                "hexValue": "307830",
                                                                "id": 5655,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "874:3:48",
                                                                "subdenomination": null,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0x0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": null,
                                                                "arguments": [
                                                                    {
                                                                        "argumentTypes": null,
                                                                        "id": 5649,
                                                                        "name": "poolAddr",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5602,
                                                                        "src": "832:8:48",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 5648,
                                                                    "name": "ILendingPoolV2",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1090,
                                                                    "src": "817:14:48",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_ILendingPoolV2_$1090_$",
                                                                        "typeString": "type(contract ILendingPoolV2)"
                                                                    }
                                                                },
                                                                "id": 5650,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "817:24:48",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_ILendingPoolV2_$1090",
                                                                    "typeString": "contract ILendingPoolV2"
                                                                }
                                                            },
                                                            "id": 5651,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "deposit",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1071,
                                                            "src": "817:32:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$",
                                                                "typeString": "function (address,uint256,address,uint16) external"
                                                            }
                                                        },
                                                        "id": 5656,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "817:61:48",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 5657,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "817:61:48"
                                                }
                                            ]
                                        }
                                    },
                                    "id": 5660,
                                    "nodeType": "IfStatement",
                                    "src": "543:340:48",
                                    "trueBody": {
                                        "id": 5633,
                                        "nodeType": "Block",
                                        "src": "563:96:48",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 5628,
                                                            "name": "output",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5593,
                                                            "src": "630:6:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 5629,
                                                            "name": "inputAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5610,
                                                            "src": "638:11:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 5630,
                                                            "name": "to",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5595,
                                                            "src": "651:2:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                {
                                                                    "argumentTypes": null,
                                                                    "id": 5625,
                                                                    "name": "poolAddr",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5602,
                                                                    "src": "611:8:48",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 5624,
                                                                "name": "ILendingPoolV2",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1090,
                                                                "src": "596:14:48",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ILendingPoolV2_$1090_$",
                                                                    "typeString": "type(contract ILendingPoolV2)"
                                                                }
                                                            },
                                                            "id": 5626,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "596:24:48",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ILendingPoolV2_$1090",
                                                                "typeString": "contract ILendingPoolV2"
                                                            }
                                                        },
                                                        "id": 5627,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "withdraw",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1060,
                                                        "src": "596:33:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address,uint256,address) external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5631,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "596:58:48",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5632,
                                                "nodeType": "ExpressionStatement",
                                                "src": "596:58:48"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "documentation": null,
                        "functionSelector": "32ef8314",
                        "id": 5662,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "swap",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 5599,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "413:8:48"
                        },
                        "parameters": {
                            "id": 5598,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5591,
                                    "mutability": "mutable",
                                    "name": "input",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5662,
                                    "src": "332:13:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5590,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "332:7:48",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5593,
                                    "mutability": "mutable",
                                    "name": "output",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5662,
                                    "src": "349:14:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5592,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "349:7:48",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5595,
                                    "mutability": "mutable",
                                    "name": "to",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5662,
                                    "src": "367:10:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5594,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "367:7:48",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5597,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5662,
                                    "src": "381:19:48",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 5596,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "381:5:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "328:75:48"
                        },
                        "returnParameters": {
                            "id": 5600,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "422:0:48"
                        },
                        "scope": 5712,
                        "src": "315:571:48",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 5689,
                            "nodeType": "Block",
                            "src": "984:156:48",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 5675,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 5672,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5664,
                                                        "src": "996:4:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    },
                                                    "id": 5673,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "996:11:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "3231",
                                                    "id": 5674,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1011:2:48",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_21_by_1",
                                                        "typeString": "int_const 21"
                                                    },
                                                    "value": "21"
                                                },
                                                "src": "996:17:48",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "5061697241546f6b656e56323a20696e76616c6964206461746121",
                                                "id": 5676,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1015:29:48",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_efd926daf1ee996a2ed9e9041754f7e62771ddb393b0e3a63eeef33cc32e093b",
                                                    "typeString": "literal_string \"PairATokenV2: invalid data!\""
                                                },
                                                "value": "PairATokenV2: invalid data!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_efd926daf1ee996a2ed9e9041754f7e62771ddb393b0e3a63eeef33cc32e093b",
                                                    "typeString": "literal_string \"PairATokenV2: invalid data!\""
                                                }
                                            ],
                                            "id": 5671,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "988:7:48",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 5677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "988:57:48",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5678,
                                    "nodeType": "ExpressionStatement",
                                    "src": "988:57:48"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 5686,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 5679,
                                            "name": "inputType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5669,
                                            "src": "1049:9:48",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 5682,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5664,
                                                        "src": "1067:4:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    },
                                                    "id": 5684,
                                                    "indexExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "3230",
                                                        "id": 5683,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1072:2:48",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_20_by_1",
                                                            "typeString": "int_const 20"
                                                        },
                                                        "value": "20"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "1067:8:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                    }
                                                ],
                                                "id": 5681,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1061:5:48",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                    "typeString": "type(uint8)"
                                                },
                                                "typeName": {
                                                    "id": 5680,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1061:5:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": null,
                                                        "typeString": null
                                                    }
                                                }
                                            },
                                            "id": 5685,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1061:15:48",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "src": "1049:27:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "id": 5687,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1049:27:48"
                                },
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "1091:46:48",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "1099:32:48",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "data",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1121:4:48"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "1127:2:48",
                                                                    "type": "",
                                                                    "value": "20"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1117:3:48"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1117:13:48"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1111:5:48"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1111:20:48"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "poolAddr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1099:8:48"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "evmVersion": "istanbul",
                                    "externalReferences": [
                                        {
                                            "declaration": 5664,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1121:4:48",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 5667,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1099:8:48",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 5688,
                                    "nodeType": "InlineAssembly",
                                    "src": "1082:55:48"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 5690,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "parseData",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 5665,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5664,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5690,
                                    "src": "908:17:48",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 5663,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "908:5:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "907:19:48"
                        },
                        "returnParameters": {
                            "id": 5670,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5667,
                                    "mutability": "mutable",
                                    "name": "poolAddr",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5690,
                                    "src": "949:16:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5666,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "949:7:48",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5669,
                                    "mutability": "mutable",
                                    "name": "inputType",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5690,
                                    "src": "967:15:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 5668,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "967:5:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "948:35:48"
                        },
                        "scope": 5712,
                        "src": "889:251:48",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            5324
                        ],
                        "body": {
                            "id": 5706,
                            "nodeType": "Block",
                            "src": "1271:23:48",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 5704,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5696,
                                        "src": "1282:8:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 5703,
                                    "id": 5705,
                                    "nodeType": "Return",
                                    "src": "1275:15:48"
                                }
                            ]
                        },
                        "documentation": null,
                        "functionSelector": "7eace892",
                        "id": 5707,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getOutputAmount",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 5700,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1237:8:48"
                        },
                        "parameters": {
                            "id": 5699,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5692,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5707,
                                    "src": "1171:7:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5691,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1171:7:48",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5694,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5707,
                                    "src": "1182:7:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5693,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1182:7:48",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5696,
                                    "mutability": "mutable",
                                    "name": "amountIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5707,
                                    "src": "1193:13:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5695,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1193:4:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5698,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5707,
                                    "src": "1210:14:48",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 5697,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1210:5:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1167:60:48"
                        },
                        "returnParameters": {
                            "id": 5703,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5702,
                                    "mutability": "mutable",
                                    "name": "amountOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 5707,
                                    "src": "1255:14:48",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5701,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1255:4:48",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1254:16:48"
                        },
                        "scope": 5712,
                        "src": "1143:151:48",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 5710,
                            "nodeType": "Block",
                            "src": "1324:2:48",
                            "statements": []
                        },
                        "documentation": null,
                        "id": 5711,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 5708,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1304:2:48"
                        },
                        "returnParameters": {
                            "id": 5709,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1324:0:48"
                        },
                        "scope": 5712,
                        "src": "1297:29:48",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 5713,
                "src": "246:1082:48"
            }
        ],
        "src": "32:1296:48"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "project:/contracts/swappa/PairATokenV2.sol",
            "exportedSymbols": {
                "PairATokenV2": [
                    5712
                ]
            },
            "license": "MIT"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "0.6",
                        ".8"
                    ]
                },
                "id": 5580,
                "name": "PragmaDirective",
                "src": "32:22:48"
            },
            {
                "attributes": {
                    "SourceUnit": 219,
                    "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
                    "file": "@openzeppelin/contracts/math/SafeMath.sol",
                    "scope": 5713,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 5581,
                "name": "ImportDirective",
                "src": "56:51:48"
            },
            {
                "attributes": {
                    "SourceUnit": 726,
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "scope": 5713,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 5582,
                "name": "ImportDirective",
                "src": "108:55:48"
            },
            {
                "attributes": {
                    "SourceUnit": 1091,
                    "absolutePath": "project:/contracts/interfaces/aave-v2/ILendingPoolV2.sol",
                    "file": "../interfaces/aave-v2/ILendingPoolV2.sol",
                    "scope": 5713,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 5583,
                "name": "ImportDirective",
                "src": "164:50:48"
            },
            {
                "attributes": {
                    "SourceUnit": 5326,
                    "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
                    "file": "./ISwappaPairV1.sol",
                    "scope": 5713,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 5584,
                "name": "ImportDirective",
                "src": "215:29:48"
            },
            {
                "attributes": {
                    "abstract": false,
                    "contractDependencies": [
                        5325
                    ],
                    "contractKind": "contract",
                    "documentation": null,
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        5712,
                        5325
                    ],
                    "name": "PairATokenV2",
                    "scope": 5713
                },
                "children": [
                    {
                        "attributes": {
                            "arguments": null
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "ISwappaPairV1",
                                    "referencedDeclaration": 5325,
                                    "type": "contract ISwappaPairV1"
                                },
                                "id": 5585,
                                "name": "UserDefinedTypeName",
                                "src": "271:13:48"
                            }
                        ],
                        "id": 5586,
                        "name": "InheritanceSpecifier",
                        "src": "271:13:48"
                    },
                    {
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "SafeMath",
                                    "referencedDeclaration": 218,
                                    "type": "library SafeMath"
                                },
                                "id": 5587,
                                "name": "UserDefinedTypeName",
                                "src": "294:8:48"
                            },
                            {
                                "attributes": {
                                    "name": "uint",
                                    "type": "uint256"
                                },
                                "id": 5588,
                                "name": "ElementaryTypeName",
                                "src": "307:4:48"
                            }
                        ],
                        "id": 5589,
                        "name": "UsingForDirective",
                        "src": "288:24:48"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                5311
                            ],
                            "documentation": null,
                            "functionSelector": "32ef8314",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "swap",
                            "scope": 5712,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 5599,
                                "name": "OverrideSpecifier",
                                "src": "413:8:48"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "input",
                                            "overrides": null,
                                            "scope": 5662,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5590,
                                                "name": "ElementaryTypeName",
                                                "src": "332:7:48"
                                            }
                                        ],
                                        "id": 5591,
                                        "name": "VariableDeclaration",
                                        "src": "332:13:48"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "output",
                                            "overrides": null,
                                            "scope": 5662,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5592,
                                                "name": "ElementaryTypeName",
                                                "src": "349:7:48"
                                            }
                                        ],
                                        "id": 5593,
                                        "name": "VariableDeclaration",
                                        "src": "349:14:48"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "to",
                                            "overrides": null,
                                            "scope": 5662,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5594,
                                                "name": "ElementaryTypeName",
                                                "src": "367:7:48"
                                            }
                                        ],
                                        "id": 5595,
                                        "name": "VariableDeclaration",
                                        "src": "367:10:48"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 5662,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 5596,
                                                "name": "ElementaryTypeName",
                                                "src": "381:5:48"
                                            }
                                        ],
                                        "id": 5597,
                                        "name": "VariableDeclaration",
                                        "src": "381:19:48"
                                    }
                                ],
                                "id": 5598,
                                "name": "ParameterList",
                                "src": "328:75:48"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5600,
                                "name": "ParameterList",
                                "src": "422:0:48"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                5602,
                                                5604
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "poolAddr",
                                                    "overrides": null,
                                                    "scope": 5661,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 5601,
                                                        "name": "ElementaryTypeName",
                                                        "src": "427:7:48"
                                                    }
                                                ],
                                                "id": 5602,
                                                "name": "VariableDeclaration",
                                                "src": "427:16:48"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "inputType",
                                                    "overrides": null,
                                                    "scope": 5661,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint8",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint8",
                                                            "type": "uint8"
                                                        },
                                                        "id": 5603,
                                                        "name": "ElementaryTypeName",
                                                        "src": "445:5:48"
                                                    }
                                                ],
                                                "id": 5604,
                                                "name": "VariableDeclaration",
                                                "src": "445:15:48"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(address,uint8)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5690,
                                                            "type": "function (bytes memory) pure returns (address,uint8)",
                                                            "value": "parseData"
                                                        },
                                                        "id": 5605,
                                                        "name": "Identifier",
                                                        "src": "464:9:48"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5597,
                                                            "type": "bytes calldata",
                                                            "value": "data"
                                                        },
                                                        "id": 5606,
                                                        "name": "Identifier",
                                                        "src": "474:4:48"
                                                    }
                                                ],
                                                "id": 5607,
                                                "name": "FunctionCall",
                                                "src": "464:15:48"
                                            }
                                        ],
                                        "id": 5608,
                                        "name": "VariableDeclarationStatement",
                                        "src": "426:53:48"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                5610
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "inputAmount",
                                                    "overrides": null,
                                                    "scope": 5661,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 5609,
                                                        "name": "ElementaryTypeName",
                                                        "src": "483:4:48"
                                                    }
                                                ],
                                                "id": 5610,
                                                "name": "VariableDeclaration",
                                                "src": "483:16:48"
                                            },
                                            {
                                                "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": 5611,
                                                                        "name": "Identifier",
                                                                        "src": "502:5:48"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5591,
                                                                            "type": "address",
                                                                            "value": "input"
                                                                        },
                                                                        "id": 5612,
                                                                        "name": "Identifier",
                                                                        "src": "508:5:48"
                                                                    }
                                                                ],
                                                                "id": 5613,
                                                                "name": "FunctionCall",
                                                                "src": "502:12:48"
                                                            }
                                                        ],
                                                        "id": 5614,
                                                        "name": "MemberAccess",
                                                        "src": "502:22:48"
                                                    },
                                                    {
                                                        "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$_PairATokenV2_$5712",
                                                                            "typeString": "contract PairATokenV2"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "type": null
                                                                        },
                                                                        "id": 5615,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "525:7:48"
                                                                    }
                                                                ],
                                                                "id": 5616,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "525:7:48"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract PairATokenV2",
                                                                    "value": "this"
                                                                },
                                                                "id": 5617,
                                                                "name": "Identifier",
                                                                "src": "533:4:48"
                                                            }
                                                        ],
                                                        "id": 5618,
                                                        "name": "FunctionCall",
                                                        "src": "525:13:48"
                                                    }
                                                ],
                                                "id": 5619,
                                                "name": "FunctionCall",
                                                "src": "502:37:48"
                                            }
                                        ],
                                        "id": 5620,
                                        "name": "VariableDeclarationStatement",
                                        "src": "483:56:48"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "==",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5604,
                                                            "type": "uint8",
                                                            "value": "inputType"
                                                        },
                                                        "id": 5621,
                                                        "name": "Identifier",
                                                        "src": "547:9:48"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "31",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "number",
                                                            "type": "int_const 1",
                                                            "value": "1"
                                                        },
                                                        "id": 5622,
                                                        "name": "Literal",
                                                        "src": "560:1:48"
                                                    }
                                                ],
                                                "id": 5623,
                                                "name": "BinaryOperation",
                                                "src": "547:14:48"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "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_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "withdraw",
                                                                            "referencedDeclaration": 1060,
                                                                            "type": "function (address,uint256,address) external returns (uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "contract ILendingPoolV2",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 1090,
                                                                                            "type": "type(contract ILendingPoolV2)",
                                                                                            "value": "ILendingPoolV2"
                                                                                        },
                                                                                        "id": 5624,
                                                                                        "name": "Identifier",
                                                                                        "src": "596:14:48"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5602,
                                                                                            "type": "address",
                                                                                            "value": "poolAddr"
                                                                                        },
                                                                                        "id": 5625,
                                                                                        "name": "Identifier",
                                                                                        "src": "611:8:48"
                                                                                    }
                                                                                ],
                                                                                "id": 5626,
                                                                                "name": "FunctionCall",
                                                                                "src": "596:24:48"
                                                                            }
                                                                        ],
                                                                        "id": 5627,
                                                                        "name": "MemberAccess",
                                                                        "src": "596:33:48"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5593,
                                                                            "type": "address",
                                                                            "value": "output"
                                                                        },
                                                                        "id": 5628,
                                                                        "name": "Identifier",
                                                                        "src": "630:6:48"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5610,
                                                                            "type": "uint256",
                                                                            "value": "inputAmount"
                                                                        },
                                                                        "id": 5629,
                                                                        "name": "Identifier",
                                                                        "src": "638:11:48"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5595,
                                                                            "type": "address",
                                                                            "value": "to"
                                                                        },
                                                                        "id": 5630,
                                                                        "name": "Identifier",
                                                                        "src": "651:2:48"
                                                                    }
                                                                ],
                                                                "id": 5631,
                                                                "name": "FunctionCall",
                                                                "src": "596:58:48"
                                                            }
                                                        ],
                                                        "id": 5632,
                                                        "name": "ExpressionStatement",
                                                        "src": "596:58:48"
                                                    }
                                                ],
                                                "id": 5633,
                                                "name": "Block",
                                                "src": "563:96:48"
                                            },
                                            {
                                                "attributes": {
                                                    "falseBody": null
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5604,
                                                                    "type": "uint8",
                                                                    "value": "inputType"
                                                                },
                                                                "id": 5634,
                                                                "name": "Identifier",
                                                                "src": "669:9:48"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "32",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "number",
                                                                    "type": "int_const 2",
                                                                    "value": "2"
                                                                },
                                                                "id": 5635,
                                                                "name": "Literal",
                                                                "src": "682:1:48"
                                                            }
                                                        ],
                                                        "id": 5636,
                                                        "name": "BinaryOperation",
                                                        "src": "669:14:48"
                                                    },
                                                    {
                                                        "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_26f2ea7d83f4368762647d0316760dbb5a2b1cc0de3256f9bd0be82a3934e543",
                                                                                            "typeString": "literal_string \"PairATokenV2: approve failed!\""
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        -18,
                                                                                        -18
                                                                                    ],
                                                                                    "referencedDeclaration": -18,
                                                                                    "type": "function (bool,string memory) pure",
                                                                                    "value": "require"
                                                                                },
                                                                                "id": 5637,
                                                                                "name": "Identifier",
                                                                                "src": "718:7:48"
                                                                            },
                                                                            {
                                                                                "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": 5638,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "731:5:48"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": null,
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5591,
                                                                                                            "type": "address",
                                                                                                            "value": "input"
                                                                                                        },
                                                                                                        "id": 5639,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "737:5:48"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5640,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "731:12:48"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5641,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "731:20:48"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5602,
                                                                                            "type": "address",
                                                                                            "value": "poolAddr"
                                                                                        },
                                                                                        "id": 5642,
                                                                                        "name": "Identifier",
                                                                                        "src": "752:8:48"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5610,
                                                                                            "type": "uint256",
                                                                                            "value": "inputAmount"
                                                                                        },
                                                                                        "id": 5643,
                                                                                        "name": "Identifier",
                                                                                        "src": "762:11:48"
                                                                                    }
                                                                                ],
                                                                                "id": 5644,
                                                                                "name": "FunctionCall",
                                                                                "src": "731:43:48"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "hexvalue": "5061697241546f6b656e56323a20617070726f7665206661696c656421",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "subdenomination": null,
                                                                                    "token": "string",
                                                                                    "type": "literal_string \"PairATokenV2: approve failed!\"",
                                                                                    "value": "PairATokenV2: approve failed!"
                                                                                },
                                                                                "id": 5645,
                                                                                "name": "Literal",
                                                                                "src": "780:31:48"
                                                                            }
                                                                        ],
                                                                        "id": 5646,
                                                                        "name": "FunctionCall",
                                                                        "src": "718:94:48"
                                                                    }
                                                                ],
                                                                "id": 5647,
                                                                "name": "ExpressionStatement",
                                                                "src": "718:94:48"
                                                            },
                                                            {
                                                                "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_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                                            "typeString": "int_const 0"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "deposit",
                                                                                    "referencedDeclaration": 1071,
                                                                                    "type": "function (address,uint256,address,uint16) external"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "contract ILendingPoolV2",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 1090,
                                                                                                    "type": "type(contract ILendingPoolV2)",
                                                                                                    "value": "ILendingPoolV2"
                                                                                                },
                                                                                                "id": 5648,
                                                                                                "name": "Identifier",
                                                                                                "src": "817:14:48"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": null,
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5602,
                                                                                                    "type": "address",
                                                                                                    "value": "poolAddr"
                                                                                                },
                                                                                                "id": 5649,
                                                                                                "name": "Identifier",
                                                                                                "src": "832:8:48"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5650,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "817:24:48"
                                                                                    }
                                                                                ],
                                                                                "id": 5651,
                                                                                "name": "MemberAccess",
                                                                                "src": "817:32:48"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5591,
                                                                                    "type": "address",
                                                                                    "value": "input"
                                                                                },
                                                                                "id": 5652,
                                                                                "name": "Identifier",
                                                                                "src": "850:5:48"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5610,
                                                                                    "type": "uint256",
                                                                                    "value": "inputAmount"
                                                                                },
                                                                                "id": 5653,
                                                                                "name": "Identifier",
                                                                                "src": "857:11:48"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5595,
                                                                                    "type": "address",
                                                                                    "value": "to"
                                                                                },
                                                                                "id": 5654,
                                                                                "name": "Identifier",
                                                                                "src": "870:2:48"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "hexvalue": "307830",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "subdenomination": null,
                                                                                    "token": "number",
                                                                                    "type": "int_const 0",
                                                                                    "value": "0x0"
                                                                                },
                                                                                "id": 5655,
                                                                                "name": "Literal",
                                                                                "src": "874:3:48"
                                                                            }
                                                                        ],
                                                                        "id": 5656,
                                                                        "name": "FunctionCall",
                                                                        "src": "817:61:48"
                                                                    }
                                                                ],
                                                                "id": 5657,
                                                                "name": "ExpressionStatement",
                                                                "src": "817:61:48"
                                                            }
                                                        ],
                                                        "id": 5658,
                                                        "name": "Block",
                                                        "src": "685:198:48"
                                                    }
                                                ],
                                                "id": 5659,
                                                "name": "IfStatement",
                                                "src": "665:218:48"
                                            }
                                        ],
                                        "id": 5660,
                                        "name": "IfStatement",
                                        "src": "543:340:48"
                                    }
                                ],
                                "id": 5661,
                                "name": "Block",
                                "src": "422:464:48"
                            }
                        ],
                        "id": 5662,
                        "name": "FunctionDefinition",
                        "src": "315:571:48"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "parseData",
                            "overrides": null,
                            "scope": 5712,
                            "stateMutability": "pure",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 5690,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 5663,
                                                "name": "ElementaryTypeName",
                                                "src": "908:5:48"
                                            }
                                        ],
                                        "id": 5664,
                                        "name": "VariableDeclaration",
                                        "src": "908:17:48"
                                    }
                                ],
                                "id": 5665,
                                "name": "ParameterList",
                                "src": "907:19:48"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "poolAddr",
                                            "overrides": null,
                                            "scope": 5690,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5666,
                                                "name": "ElementaryTypeName",
                                                "src": "949:7:48"
                                            }
                                        ],
                                        "id": 5667,
                                        "name": "VariableDeclaration",
                                        "src": "949:16:48"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "inputType",
                                            "overrides": null,
                                            "scope": 5690,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint8",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint8",
                                                    "type": "uint8"
                                                },
                                                "id": 5668,
                                                "name": "ElementaryTypeName",
                                                "src": "967:5:48"
                                            }
                                        ],
                                        "id": 5669,
                                        "name": "VariableDeclaration",
                                        "src": "967:15:48"
                                    }
                                ],
                                "id": 5670,
                                "name": "ParameterList",
                                "src": "948:35:48"
                            },
                            {
                                "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_efd926daf1ee996a2ed9e9041754f7e62771ddb393b0e3a63eeef33cc32e093b",
                                                                    "typeString": "literal_string \"PairATokenV2: invalid data!\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 5671,
                                                        "name": "Identifier",
                                                        "src": "988:7:48"
                                                    },
                                                    {
                                                        "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": 5664,
                                                                            "type": "bytes memory",
                                                                            "value": "data"
                                                                        },
                                                                        "id": 5672,
                                                                        "name": "Identifier",
                                                                        "src": "996:4:48"
                                                                    }
                                                                ],
                                                                "id": 5673,
                                                                "name": "MemberAccess",
                                                                "src": "996:11:48"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "3231",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "number",
                                                                    "type": "int_const 21",
                                                                    "value": "21"
                                                                },
                                                                "id": 5674,
                                                                "name": "Literal",
                                                                "src": "1011:2:48"
                                                            }
                                                        ],
                                                        "id": 5675,
                                                        "name": "BinaryOperation",
                                                        "src": "996:17:48"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "5061697241546f6b656e56323a20696e76616c6964206461746121",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"PairATokenV2: invalid data!\"",
                                                            "value": "PairATokenV2: invalid data!"
                                                        },
                                                        "id": 5676,
                                                        "name": "Literal",
                                                        "src": "1015:29:48"
                                                    }
                                                ],
                                                "id": 5677,
                                                "name": "FunctionCall",
                                                "src": "988:57:48"
                                            }
                                        ],
                                        "id": 5678,
                                        "name": "ExpressionStatement",
                                        "src": "988:57:48"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint8"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5669,
                                                            "type": "uint8",
                                                            "value": "inputType"
                                                        },
                                                        "id": 5679,
                                                        "name": "Identifier",
                                                        "src": "1049:9:48"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint8",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes1",
                                                                            "typeString": "bytes1"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(uint8)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint8",
                                                                            "type": null
                                                                        },
                                                                        "id": 5680,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "1061:5:48"
                                                                    }
                                                                ],
                                                                "id": 5681,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "1061:5:48"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "bytes1"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5664,
                                                                            "type": "bytes memory",
                                                                            "value": "data"
                                                                        },
                                                                        "id": 5682,
                                                                        "name": "Identifier",
                                                                        "src": "1067:4:48"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "3230",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 20",
                                                                            "value": "20"
                                                                        },
                                                                        "id": 5683,
                                                                        "name": "Literal",
                                                                        "src": "1072:2:48"
                                                                    }
                                                                ],
                                                                "id": 5684,
                                                                "name": "IndexAccess",
                                                                "src": "1067:8:48"
                                                            }
                                                        ],
                                                        "id": 5685,
                                                        "name": "FunctionCall",
                                                        "src": "1061:15:48"
                                                    }
                                                ],
                                                "id": 5686,
                                                "name": "Assignment",
                                                "src": "1049:27:48"
                                            }
                                        ],
                                        "id": 5687,
                                        "name": "ExpressionStatement",
                                        "src": "1049:27:48"
                                    },
                                    {
                                        "attributes": {
                                            "evmVersion": "istanbul",
                                            "externalReferences": [
                                                {
                                                    "declaration": 5664,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1121:4:48",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 5667,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1099:8:48",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "operations": "{\n    poolAddr := mload(add(data, 20))\n}"
                                        },
                                        "children": [],
                                        "id": 5688,
                                        "name": "InlineAssembly",
                                        "src": "1082:55:48"
                                    }
                                ],
                                "id": 5689,
                                "name": "Block",
                                "src": "984:156:48"
                            }
                        ],
                        "id": 5690,
                        "name": "FunctionDefinition",
                        "src": "889:251:48"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                5324
                            ],
                            "documentation": null,
                            "functionSelector": "7eace892",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getOutputAmount",
                            "scope": 5712,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 5700,
                                "name": "OverrideSpecifier",
                                "src": "1237:8:48"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "overrides": null,
                                            "scope": 5707,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5691,
                                                "name": "ElementaryTypeName",
                                                "src": "1171:7:48"
                                            }
                                        ],
                                        "id": 5692,
                                        "name": "VariableDeclaration",
                                        "src": "1171:7:48"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "overrides": null,
                                            "scope": 5707,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5693,
                                                "name": "ElementaryTypeName",
                                                "src": "1182:7:48"
                                            }
                                        ],
                                        "id": 5694,
                                        "name": "VariableDeclaration",
                                        "src": "1182:7:48"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "overrides": null,
                                            "scope": 5707,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 5695,
                                                "name": "ElementaryTypeName",
                                                "src": "1193:4:48"
                                            }
                                        ],
                                        "id": 5696,
                                        "name": "VariableDeclaration",
                                        "src": "1193:13:48"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "overrides": null,
                                            "scope": 5707,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 5697,
                                                "name": "ElementaryTypeName",
                                                "src": "1210:5:48"
                                            }
                                        ],
                                        "id": 5698,
                                        "name": "VariableDeclaration",
                                        "src": "1210:14:48"
                                    }
                                ],
                                "id": 5699,
                                "name": "ParameterList",
                                "src": "1167:60:48"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "overrides": null,
                                            "scope": 5707,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 5701,
                                                "name": "ElementaryTypeName",
                                                "src": "1255:4:48"
                                            }
                                        ],
                                        "id": 5702,
                                        "name": "VariableDeclaration",
                                        "src": "1255:14:48"
                                    }
                                ],
                                "id": 5703,
                                "name": "ParameterList",
                                "src": "1254:16:48"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 5703
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 5696,
                                                    "type": "uint256",
                                                    "value": "amountIn"
                                                },
                                                "id": 5704,
                                                "name": "Identifier",
                                                "src": "1282:8:48"
                                            }
                                        ],
                                        "id": 5705,
                                        "name": "Return",
                                        "src": "1275:15:48"
                                    }
                                ],
                                "id": 5706,
                                "name": "Block",
                                "src": "1271:23:48"
                            }
                        ],
                        "id": 5707,
                        "name": "FunctionDefinition",
                        "src": "1143:151:48"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "receive",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "overrides": null,
                            "scope": 5712,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5708,
                                "name": "ParameterList",
                                "src": "1304:2:48"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5709,
                                "name": "ParameterList",
                                "src": "1324:0:48"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5710,
                                "name": "Block",
                                "src": "1324:2:48"
                            }
                        ],
                        "id": 5711,
                        "name": "FunctionDefinition",
                        "src": "1297:29:48"
                    }
                ],
                "id": 5712,
                "name": "ContractDefinition",
                "src": "246:1082:48"
            }
        ],
        "id": 5713,
        "name": "SourceUnit",
        "src": "32:1296:48"
    },
    "compiler": {
        "name": "solc",
        "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.4.16",
    "updatedAt": "2025-02-07T17:50:42.825Z",
    "devdoc": {
        "methods": {}
    },
    "userdoc": {
        "methods": {}
    }
}
