{
  "contractName": "IAToken",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/swappa/PairAToken.sol\":\"IAToken\"},\"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/ILendingPool.sol\":{\"keccak256\":\"0x76704334081c8b6f39041a1d45ecfeee613aa1c44be7d9e91f3470a723172ef3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d5acefb9157129cdb7bd3c5fe2f6ad5e4ea0336a303149a5f4e4e86313aed5e\",\"dweb:/ipfs/QmcQpmbq2rJjykYkGZcwkY5Z8mLjcY62yaihgwbqHgMTuC\"]},\"project:/contracts/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0xd5c1dfc9cd26651441630bbc0d96887f778351981f3ab5c01c0adf41dda0e085\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d197c0c55018491168511b9925900935b28d1656a27fec99a5e8624f40465e48\",\"dweb:/ipfs/QmRb1tc5kPFGCTVxee5dq8mQHSPD4hfYHbQBZC2qnvkwTA\"]},\"project:/contracts/swappa/ISwappaPairV1.sol\":{\"keccak256\":\"0x3ad68981bda91ed83c5e9ee8617f08bb5e208208477fb755cc77077f127010ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e4390b1bebc39f58bff34b9099a646ead67cef27b722ef61548487251cca719\",\"dweb:/ipfs/QmRWEuYyjHaS957VKWtTfDpzfqkXb2bvEsS33meAC76ZuU\"]},\"project:/contracts/swappa/PairAToken.sol\":{\"keccak256\":\"0x495d2a30e730388192317ed17d9fbec6934ab76d16c04fdbd79916fc2f571109\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d931c5f264574f43a80dc4db1bdf377f8433a12107d333acb34462729d60ef3f\",\"dweb:/ipfs/QmdA2H81cxtumuNkkpSKxr2K2S3J3MqB2JhefNvt6nv9VQ\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "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 \"./ISwappaPairV1.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\n\ninterface IAToken {\n\tfunction redeem(uint256 _amount) external;\n}\n\ncontract PairAToken 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 providerAddr, uint8 inputType) = parseData(data);\n\t\tuint inputAmount = ERC20(input).balanceOf(address(this));\n\t\tif (inputType == 1) {\n\t\t\t// Redeem AToken.\n\t\t\tIAToken(input).redeem(inputAmount);\n\t\t} else if (inputType == 2) {\n\t\t\t// Deposit CELO.\n\t\t\taddress lendingPoolAddr = ILendingPoolAddressesProvider(providerAddr).getLendingPool();\n\t\t\tILendingPool(lendingPoolAddr).deposit{value: inputAmount}(\n\t\t\t\t0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE,\n\t\t\t\tinputAmount,\n\t\t\t\t0x0);\n\t\t} else if (inputType == 3) {\n\t\t\t// Deposit non CELO AToken.\n\t\t\taddress lendingPoolAddr = ILendingPoolAddressesProvider(providerAddr).getLendingPool();\n\t\t\taddress lendingPoolCoreAddr = ILendingPoolAddressesProvider(providerAddr).getLendingPoolCore();\n\t\t\trequire(\n\t\t\t\tERC20(input).approve(lendingPoolCoreAddr, inputAmount),\n\t\t\t\t\"PairAToken: approve failed!\");\n\t\t\tILendingPool(lendingPoolAddr).deposit(input, inputAmount, 0x0);\n\t\t}\n\t\trequire(\n\t\t\tERC20(output).transfer(to, inputAmount),\n\t\t\t\"PairAToken: transfer failed!\");\n\t}\n\n\tfunction parseData(bytes memory data) private pure returns (address providerAddr, uint8 inputType) {\n\t\trequire(data.length == 21, \"PairAToken: invalid data!\");\n\t\tinputType = uint8(data[20]);\n    assembly {\n      providerAddr := 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/PairAToken.sol",
  "ast": {
    "absolutePath": "project:/contracts/swappa/PairAToken.sol",
    "exportedSymbols": {
      "IAToken": [
        5402
      ],
      "PairAToken": [
        5578
      ]
    },
    "id": 5579,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5391,
        "literals": [
          "solidity",
          "0.6",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:22:47"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 5392,
        "nodeType": "ImportDirective",
        "scope": 5579,
        "sourceUnit": 219,
        "src": "56:51:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "id": 5393,
        "nodeType": "ImportDirective",
        "scope": 5579,
        "sourceUnit": 726,
        "src": "108:55:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
        "file": "./ISwappaPairV1.sol",
        "id": 5394,
        "nodeType": "ImportDirective",
        "scope": 5579,
        "sourceUnit": 5326,
        "src": "164:29:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/aave/ILendingPool.sol",
        "file": "../interfaces/aave/ILendingPool.sol",
        "id": 5395,
        "nodeType": "ImportDirective",
        "scope": 5579,
        "sourceUnit": 1140,
        "src": "194:45:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/aave/ILendingPoolAddressesProvider.sol",
        "file": "../interfaces/aave/ILendingPoolAddressesProvider.sol",
        "id": 5396,
        "nodeType": "ImportDirective",
        "scope": 5579,
        "sourceUnit": 1254,
        "src": "240:62:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 5402,
        "linearizedBaseContracts": [
          5402
        ],
        "name": "IAToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "db006a75",
            "id": 5401,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "redeem",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5398,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5401,
                  "src": "341:15:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5397,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "341:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "340:17:47"
            },
            "returnParameters": {
              "id": 5400,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "366:0:47"
            },
            "scope": 5402,
            "src": "325:42:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5579,
        "src": "304:65:47"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5403,
              "name": "ISwappaPairV1",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5325,
              "src": "394:13:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ISwappaPairV1_$5325",
                "typeString": "contract ISwappaPairV1"
              }
            },
            "id": 5404,
            "nodeType": "InheritanceSpecifier",
            "src": "394:13:47"
          }
        ],
        "contractDependencies": [
          5325
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5578,
        "linearizedBaseContracts": [
          5578,
          5325
        ],
        "name": "PairAToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 5407,
            "libraryName": {
              "contractScope": null,
              "id": 5405,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 218,
              "src": "417:8:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$218",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "411:24:47",
            "typeName": {
              "id": 5406,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "430:4:47",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "baseFunctions": [
              5311
            ],
            "body": {
              "id": 5527,
              "nodeType": "Block",
              "src": "545:1010:47",
              "statements": [
                {
                  "assignments": [
                    5420,
                    5422
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5420,
                      "mutability": "mutable",
                      "name": "providerAddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5527,
                      "src": "550:20:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5419,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "550:7:47",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5422,
                      "mutability": "mutable",
                      "name": "inputType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5527,
                      "src": "572:15:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 5421,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "572:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5426,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5424,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5415,
                        "src": "601:4:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 5423,
                      "name": "parseData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5556,
                      "src": "591:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint8_$",
                        "typeString": "function (bytes memory) pure returns (address,uint8)"
                      }
                    },
                    "id": 5425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "591:15:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_uint8_$",
                      "typeString": "tuple(address,uint8)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "549:57:47"
                },
                {
                  "assignments": [
                    5428
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5428,
                      "mutability": "mutable",
                      "name": "inputAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5527,
                      "src": "610:16:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5427,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "610:4:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5438,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5435,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "660:4:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PairAToken_$5578",
                              "typeString": "contract PairAToken"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PairAToken_$5578",
                              "typeString": "contract PairAToken"
                            }
                          ],
                          "id": 5434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "652:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5433,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "652:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "652:13:47",
                        "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": 5430,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5409,
                            "src": "635:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5429,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 725,
                          "src": "629:5:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 5431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "629:12:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$725",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 5432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 325,
                      "src": "629:22:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 5437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "629:37:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "610:56:47"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 5441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5439,
                      "name": "inputType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5422,
                      "src": "674:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5440,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "687:1:47",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "674:14:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 5452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5450,
                        "name": "inputType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5422,
                        "src": "765:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 5451,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "778:1:47",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "765:14:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 5475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5473,
                          "name": "inputType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5422,
                          "src": "1044:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1057:1:47",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "1044:14:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5513,
                      "nodeType": "IfStatement",
                      "src": "1040:421:47",
                      "trueBody": {
                        "id": 5512,
                        "nodeType": "Block",
                        "src": "1060:401:47",
                        "statements": [
                          {
                            "assignments": [
                              5477
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5477,
                                "mutability": "mutable",
                                "name": "lendingPoolAddr",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5512,
                                "src": "1096:23:47",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 5476,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1096:7:47",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5483,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5479,
                                      "name": "providerAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5420,
                                      "src": "1152:12:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5478,
                                    "name": "ILendingPoolAddressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1253,
                                    "src": "1122:29:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILendingPoolAddressesProvider_$1253_$",
                                      "typeString": "type(contract ILendingPoolAddressesProvider)"
                                    }
                                  },
                                  "id": 5480,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1122:43:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$1253",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 5481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLendingPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1147,
                                "src": "1122:58:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 5482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1122:60:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1096:86:47"
                          },
                          {
                            "assignments": [
                              5485
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5485,
                                "mutability": "mutable",
                                "name": "lendingPoolCoreAddr",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5512,
                                "src": "1187:27:47",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 5484,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1187:7:47",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5491,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5487,
                                      "name": "providerAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5420,
                                      "src": "1247:12:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5486,
                                    "name": "ILendingPoolAddressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1253,
                                    "src": "1217:29:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILendingPoolAddressesProvider_$1253_$",
                                      "typeString": "type(contract ILendingPoolAddressesProvider)"
                                    }
                                  },
                                  "id": 5488,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1217:43:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$1253",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 5489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLendingPoolCore",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1157,
                                "src": "1217:62:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view external returns (address payable)"
                                }
                              },
                              "id": 5490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1217:64:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1187:94:47"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5497,
                                      "name": "lendingPoolCoreAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5485,
                                      "src": "1320:19:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 5498,
                                      "name": "inputAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5428,
                                      "src": "1341:11:47",
                                      "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": 5494,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5409,
                                          "src": "1305:5:47",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 5493,
                                        "name": "ERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 725,
                                        "src": "1299:5:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                          "typeString": "type(contract ERC20)"
                                        }
                                      },
                                      "id": 5495,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1299:12:47",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC20_$725",
                                        "typeString": "contract ERC20"
                                      }
                                    },
                                    "id": 5496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 385,
                                    "src": "1299:20:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 5499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1299:54:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "5061697241546f6b656e3a20617070726f7665206661696c656421",
                                  "id": 5500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1359:29:47",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_01a5b9574a9953405546c93774a74f0ce672623591bf9df1230dbca18099357b",
                                    "typeString": "literal_string \"PairAToken: approve failed!\""
                                  },
                                  "value": "PairAToken: approve failed!"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_01a5b9574a9953405546c93774a74f0ce672623591bf9df1230dbca18099357b",
                                    "typeString": "literal_string \"PairAToken: approve failed!\""
                                  }
                                ],
                                "id": 5492,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "1286:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 5501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1286:103:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5502,
                            "nodeType": "ExpressionStatement",
                            "src": "1286:103:47"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5507,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5409,
                                  "src": "1432:5:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5508,
                                  "name": "inputAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5428,
                                  "src": "1439:11:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 5509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1452:3:47",
                                  "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_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5504,
                                      "name": "lendingPoolAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5477,
                                      "src": "1407:15:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5503,
                                    "name": "ILendingPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "1394:12:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILendingPool_$1139_$",
                                      "typeString": "type(contract ILendingPool)"
                                    }
                                  },
                                  "id": 5505,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1394:29:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$1139",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 5506,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "deposit",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1138,
                                "src": "1394:37:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint16_$returns$__$",
                                  "typeString": "function (address,uint256,uint16) payable external"
                                }
                              },
                              "id": 5510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1394:62:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5511,
                            "nodeType": "ExpressionStatement",
                            "src": "1394:62:47"
                          }
                        ]
                      }
                    },
                    "id": 5514,
                    "nodeType": "IfStatement",
                    "src": "761:700:47",
                    "trueBody": {
                      "id": 5472,
                      "nodeType": "Block",
                      "src": "781:253:47",
                      "statements": [
                        {
                          "assignments": [
                            5454
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5454,
                              "mutability": "mutable",
                              "name": "lendingPoolAddr",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 5472,
                              "src": "806:23:47",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "typeName": {
                                "id": 5453,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "806:7:47",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 5460,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5456,
                                    "name": "providerAddr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5420,
                                    "src": "862:12:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5455,
                                  "name": "ILendingPoolAddressesProvider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1253,
                                  "src": "832:29:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ILendingPoolAddressesProvider_$1253_$",
                                    "typeString": "type(contract ILendingPoolAddressesProvider)"
                                  }
                                },
                                "id": 5457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "832:43:47",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$1253",
                                  "typeString": "contract ILendingPoolAddressesProvider"
                                }
                              },
                              "id": 5458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getLendingPool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1147,
                              "src": "832:58:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 5459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "832:60:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "806:86:47"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                                "id": 5467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "960:42:47",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                              },
                              {
                                "argumentTypes": null,
                                "id": 5468,
                                "name": "inputAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5428,
                                "src": "1008:11:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "307830",
                                "id": 5469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1025:3:47",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5462,
                                      "name": "lendingPoolAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5454,
                                      "src": "910:15:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5461,
                                    "name": "ILendingPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1139,
                                    "src": "897:12:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILendingPool_$1139_$",
                                      "typeString": "type(contract ILendingPool)"
                                    }
                                  },
                                  "id": 5463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "897:29:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$1139",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 5464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "deposit",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1138,
                                "src": "897:37:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint16_$returns$__$",
                                  "typeString": "function (address,uint256,uint16) payable external"
                                }
                              },
                              "id": 5466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "nodeType": "FunctionCallOptions",
                              "options": [
                                {
                                  "argumentTypes": null,
                                  "id": 5465,
                                  "name": "inputAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5428,
                                  "src": "942:11:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "src": "897:57:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint16_$returns$__$value",
                                "typeString": "function (address,uint256,uint16) payable external"
                              }
                            },
                            "id": 5470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "897:132:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5471,
                          "nodeType": "ExpressionStatement",
                          "src": "897:132:47"
                        }
                      ]
                    }
                  },
                  "id": 5515,
                  "nodeType": "IfStatement",
                  "src": "670:791:47",
                  "trueBody": {
                    "id": 5449,
                    "nodeType": "Block",
                    "src": "690:65:47",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5446,
                              "name": "inputAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5428,
                              "src": "738:11:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5443,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5409,
                                  "src": "724:5:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5442,
                                "name": "IAToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5402,
                                "src": "716:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAToken_$5402_$",
                                  "typeString": "type(contract IAToken)"
                                }
                              },
                              "id": 5444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "716:14:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5402",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 5445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "redeem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5401,
                            "src": "716:21:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 5447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "716:34:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5448,
                        "nodeType": "ExpressionStatement",
                        "src": "716:34:47"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5521,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5413,
                            "src": "1499:2:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5522,
                            "name": "inputAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5428,
                            "src": "1503:11:47",
                            "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": 5518,
                                "name": "output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5411,
                                "src": "1482:6:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5517,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 725,
                              "src": "1476:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 5519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1476:13:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$725",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 5520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 346,
                          "src": "1476:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1476:39:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061697241546f6b656e3a207472616e73666572206661696c656421",
                        "id": 5524,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1520:30:47",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_aa75948c4f2f5a8332553271788fc2954c01244bbd180138d70efed6cbce769b",
                          "typeString": "literal_string \"PairAToken: transfer failed!\""
                        },
                        "value": "PairAToken: transfer failed!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_aa75948c4f2f5a8332553271788fc2954c01244bbd180138d70efed6cbce769b",
                          "typeString": "literal_string \"PairAToken: transfer failed!\""
                        }
                      ],
                      "id": 5516,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1464:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1464:87:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5526,
                  "nodeType": "ExpressionStatement",
                  "src": "1464:87:47"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "32ef8314",
            "id": 5528,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "swap",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5417,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "536:8:47"
            },
            "parameters": {
              "id": 5416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5409,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5528,
                  "src": "455:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5408,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "455:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5411,
                  "mutability": "mutable",
                  "name": "output",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5528,
                  "src": "472:14:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5410,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "472:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5413,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5528,
                  "src": "490:10:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5412,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "490:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5415,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5528,
                  "src": "504:19:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5414,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "504:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "451:75:47"
            },
            "returnParameters": {
              "id": 5418,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "545:0:47"
            },
            "scope": 5578,
            "src": "438:1117:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5555,
              "nodeType": "Block",
              "src": "1657:158:47",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5538,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5530,
                            "src": "1669:4:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 5539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1669:11:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3231",
                          "id": 5540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1684:2:47",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_21_by_1",
                            "typeString": "int_const 21"
                          },
                          "value": "21"
                        },
                        "src": "1669:17:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5061697241546f6b656e3a20696e76616c6964206461746121",
                        "id": 5542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1688:27:47",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a6498f699a33089f78ec1042dff2e7e2cfe0c253ebcce44666442bd21ed2185a",
                          "typeString": "literal_string \"PairAToken: invalid data!\""
                        },
                        "value": "PairAToken: invalid data!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a6498f699a33089f78ec1042dff2e7e2cfe0c253ebcce44666442bd21ed2185a",
                          "typeString": "literal_string \"PairAToken: invalid data!\""
                        }
                      ],
                      "id": 5537,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1661:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1661:55:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5544,
                  "nodeType": "ExpressionStatement",
                  "src": "1661:55:47"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5545,
                      "name": "inputType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5535,
                      "src": "1720:9:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5548,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5530,
                            "src": "1738:4:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 5550,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "3230",
                            "id": 5549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1743:2:47",
                            "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": "1738:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        ],
                        "id": 5547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1732:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": {
                          "id": 5546,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1732:5:47",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1732:15:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1720:27:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 5553,
                  "nodeType": "ExpressionStatement",
                  "src": "1720:27:47"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1762:50:47",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1770:36:47",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "1796:4:47"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1802:2:47",
                                  "type": "",
                                  "value": "20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1792:3:47"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1792:13:47"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "1786:5:47"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1786:20:47"
                        },
                        "variableNames": [
                          {
                            "name": "providerAddr",
                            "nodeType": "YulIdentifier",
                            "src": "1770:12:47"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5530,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1796:4:47",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5533,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1770:12:47",
                      "valueSize": 1
                    }
                  ],
                  "id": 5554,
                  "nodeType": "InlineAssembly",
                  "src": "1753:59:47"
                }
              ]
            },
            "documentation": null,
            "id": 5556,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "parseData",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5530,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5556,
                  "src": "1577:17:47",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5529,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1577:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1576:19:47"
            },
            "returnParameters": {
              "id": 5536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5533,
                  "mutability": "mutable",
                  "name": "providerAddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5556,
                  "src": "1618:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5532,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1618:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5535,
                  "mutability": "mutable",
                  "name": "inputType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5556,
                  "src": "1640:15:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5534,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1640:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1617:39:47"
            },
            "scope": 5578,
            "src": "1558:257:47",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "baseFunctions": [
              5324
            ],
            "body": {
              "id": 5572,
              "nodeType": "Block",
              "src": "1946:23:47",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5570,
                    "name": "amountIn",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5562,
                    "src": "1957:8:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5569,
                  "id": 5571,
                  "nodeType": "Return",
                  "src": "1950:15:47"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "7eace892",
            "id": 5573,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOutputAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5566,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1912:8:47"
            },
            "parameters": {
              "id": 5565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5558,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5573,
                  "src": "1846:7:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1846:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5560,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5573,
                  "src": "1857:7:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5559,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1857:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5562,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5573,
                  "src": "1868:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5561,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1868:4:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5564,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5573,
                  "src": "1885:14:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5563,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1885:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1842:60:47"
            },
            "returnParameters": {
              "id": 5569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5568,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5573,
                  "src": "1930:14:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5567,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1930:4:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1929:16:47"
            },
            "scope": 5578,
            "src": "1818:151:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5576,
              "nodeType": "Block",
              "src": "1999:2:47",
              "statements": []
            },
            "documentation": null,
            "id": 5577,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5574,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1979:2:47"
            },
            "returnParameters": {
              "id": 5575,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1999:0:47"
            },
            "scope": 5578,
            "src": "1972:29:47",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5579,
        "src": "371:1632:47"
      }
    ],
    "src": "32:1971:47"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/swappa/PairAToken.sol",
      "exportedSymbols": {
        "IAToken": [
          5402
        ],
        "PairAToken": [
          5578
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.6",
            ".8"
          ]
        },
        "id": 5391,
        "name": "PragmaDirective",
        "src": "32:22:47"
      },
      {
        "attributes": {
          "SourceUnit": 219,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 5579,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5392,
        "name": "ImportDirective",
        "src": "56:51:47"
      },
      {
        "attributes": {
          "SourceUnit": 726,
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "scope": 5579,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5393,
        "name": "ImportDirective",
        "src": "108:55:47"
      },
      {
        "attributes": {
          "SourceUnit": 5326,
          "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
          "file": "./ISwappaPairV1.sol",
          "scope": 5579,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5394,
        "name": "ImportDirective",
        "src": "164:29:47"
      },
      {
        "attributes": {
          "SourceUnit": 1140,
          "absolutePath": "project:/contracts/interfaces/aave/ILendingPool.sol",
          "file": "../interfaces/aave/ILendingPool.sol",
          "scope": 5579,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5395,
        "name": "ImportDirective",
        "src": "194:45:47"
      },
      {
        "attributes": {
          "SourceUnit": 1254,
          "absolutePath": "project:/contracts/interfaces/aave/ILendingPoolAddressesProvider.sol",
          "file": "../interfaces/aave/ILendingPoolAddressesProvider.sol",
          "scope": 5579,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5396,
        "name": "ImportDirective",
        "src": "240:62:47"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "interface",
          "documentation": null,
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            5402
          ],
          "name": "IAToken",
          "scope": 5579
        },
        "children": [
          {
            "attributes": {
              "body": null,
              "documentation": null,
              "functionSelector": "db006a75",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "redeem",
              "overrides": null,
              "scope": 5402,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_amount",
                      "overrides": null,
                      "scope": 5401,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5397,
                        "name": "ElementaryTypeName",
                        "src": "341:7:47"
                      }
                    ],
                    "id": 5398,
                    "name": "VariableDeclaration",
                    "src": "341:15:47"
                  }
                ],
                "id": 5399,
                "name": "ParameterList",
                "src": "340:17:47"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5400,
                "name": "ParameterList",
                "src": "366:0:47"
              }
            ],
            "id": 5401,
            "name": "FunctionDefinition",
            "src": "325:42:47"
          }
        ],
        "id": 5402,
        "name": "ContractDefinition",
        "src": "304:65:47"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            5325
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            5578,
            5325
          ],
          "name": "PairAToken",
          "scope": 5579
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ISwappaPairV1",
                  "referencedDeclaration": 5325,
                  "type": "contract ISwappaPairV1"
                },
                "id": 5403,
                "name": "UserDefinedTypeName",
                "src": "394:13:47"
              }
            ],
            "id": 5404,
            "name": "InheritanceSpecifier",
            "src": "394:13:47"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 218,
                  "type": "library SafeMath"
                },
                "id": 5405,
                "name": "UserDefinedTypeName",
                "src": "417:8:47"
              },
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 5406,
                "name": "ElementaryTypeName",
                "src": "430:4:47"
              }
            ],
            "id": 5407,
            "name": "UsingForDirective",
            "src": "411:24:47"
          },
          {
            "attributes": {
              "baseFunctions": [
                5311
              ],
              "documentation": null,
              "functionSelector": "32ef8314",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "swap",
              "scope": 5578,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 5417,
                "name": "OverrideSpecifier",
                "src": "536:8:47"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "input",
                      "overrides": null,
                      "scope": 5528,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5408,
                        "name": "ElementaryTypeName",
                        "src": "455:7:47"
                      }
                    ],
                    "id": 5409,
                    "name": "VariableDeclaration",
                    "src": "455:13:47"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "output",
                      "overrides": null,
                      "scope": 5528,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5410,
                        "name": "ElementaryTypeName",
                        "src": "472:7:47"
                      }
                    ],
                    "id": 5411,
                    "name": "VariableDeclaration",
                    "src": "472:14:47"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "overrides": null,
                      "scope": 5528,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5412,
                        "name": "ElementaryTypeName",
                        "src": "490:7:47"
                      }
                    ],
                    "id": 5413,
                    "name": "VariableDeclaration",
                    "src": "490:10:47"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 5528,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 5414,
                        "name": "ElementaryTypeName",
                        "src": "504:5:47"
                      }
                    ],
                    "id": 5415,
                    "name": "VariableDeclaration",
                    "src": "504:19:47"
                  }
                ],
                "id": 5416,
                "name": "ParameterList",
                "src": "451:75:47"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5418,
                "name": "ParameterList",
                "src": "545:0:47"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5420,
                        5422
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "providerAddr",
                          "overrides": null,
                          "scope": 5527,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 5419,
                            "name": "ElementaryTypeName",
                            "src": "550:7:47"
                          }
                        ],
                        "id": 5420,
                        "name": "VariableDeclaration",
                        "src": "550:20:47"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "inputType",
                          "overrides": null,
                          "scope": 5527,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 5421,
                            "name": "ElementaryTypeName",
                            "src": "572:5:47"
                          }
                        ],
                        "id": 5422,
                        "name": "VariableDeclaration",
                        "src": "572:15:47"
                      },
                      {
                        "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": 5556,
                              "type": "function (bytes memory) pure returns (address,uint8)",
                              "value": "parseData"
                            },
                            "id": 5423,
                            "name": "Identifier",
                            "src": "591:9:47"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5415,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 5424,
                            "name": "Identifier",
                            "src": "601:4:47"
                          }
                        ],
                        "id": 5425,
                        "name": "FunctionCall",
                        "src": "591:15:47"
                      }
                    ],
                    "id": 5426,
                    "name": "VariableDeclarationStatement",
                    "src": "549:57:47"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5428
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "inputAmount",
                          "overrides": null,
                          "scope": 5527,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 5427,
                            "name": "ElementaryTypeName",
                            "src": "610:4:47"
                          }
                        ],
                        "id": 5428,
                        "name": "VariableDeclaration",
                        "src": "610:16:47"
                      },
                      {
                        "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": 5429,
                                    "name": "Identifier",
                                    "src": "629:5:47"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5409,
                                      "type": "address",
                                      "value": "input"
                                    },
                                    "id": 5430,
                                    "name": "Identifier",
                                    "src": "635:5:47"
                                  }
                                ],
                                "id": 5431,
                                "name": "FunctionCall",
                                "src": "629:12:47"
                              }
                            ],
                            "id": 5432,
                            "name": "MemberAccess",
                            "src": "629:22:47"
                          },
                          {
                            "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$_PairAToken_$5578",
                                      "typeString": "contract PairAToken"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": null
                                    },
                                    "id": 5433,
                                    "name": "ElementaryTypeName",
                                    "src": "652:7:47"
                                  }
                                ],
                                "id": 5434,
                                "name": "ElementaryTypeNameExpression",
                                "src": "652:7:47"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract PairAToken",
                                  "value": "this"
                                },
                                "id": 5435,
                                "name": "Identifier",
                                "src": "660:4:47"
                              }
                            ],
                            "id": 5436,
                            "name": "FunctionCall",
                            "src": "652:13:47"
                          }
                        ],
                        "id": 5437,
                        "name": "FunctionCall",
                        "src": "629:37:47"
                      }
                    ],
                    "id": 5438,
                    "name": "VariableDeclarationStatement",
                    "src": "610:56:47"
                  },
                  {
                    "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": 5422,
                              "type": "uint8",
                              "value": "inputType"
                            },
                            "id": 5439,
                            "name": "Identifier",
                            "src": "674:9:47"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 5440,
                            "name": "Literal",
                            "src": "687:1:47"
                          }
                        ],
                        "id": 5441,
                        "name": "BinaryOperation",
                        "src": "674:14:47"
                      },
                      {
                        "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_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "redeem",
                                      "referencedDeclaration": 5401,
                                      "type": "function (uint256) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IAToken",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5402,
                                              "type": "type(contract IAToken)",
                                              "value": "IAToken"
                                            },
                                            "id": 5442,
                                            "name": "Identifier",
                                            "src": "716:7:47"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5409,
                                              "type": "address",
                                              "value": "input"
                                            },
                                            "id": 5443,
                                            "name": "Identifier",
                                            "src": "724:5:47"
                                          }
                                        ],
                                        "id": 5444,
                                        "name": "FunctionCall",
                                        "src": "716:14:47"
                                      }
                                    ],
                                    "id": 5445,
                                    "name": "MemberAccess",
                                    "src": "716:21:47"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5428,
                                      "type": "uint256",
                                      "value": "inputAmount"
                                    },
                                    "id": 5446,
                                    "name": "Identifier",
                                    "src": "738:11:47"
                                  }
                                ],
                                "id": 5447,
                                "name": "FunctionCall",
                                "src": "716:34:47"
                              }
                            ],
                            "id": 5448,
                            "name": "ExpressionStatement",
                            "src": "716:34:47"
                          }
                        ],
                        "id": 5449,
                        "name": "Block",
                        "src": "690:65:47"
                      },
                      {
                        "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": 5422,
                                  "type": "uint8",
                                  "value": "inputType"
                                },
                                "id": 5450,
                                "name": "Identifier",
                                "src": "765:9:47"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 5451,
                                "name": "Literal",
                                "src": "778:1:47"
                              }
                            ],
                            "id": 5452,
                            "name": "BinaryOperation",
                            "src": "765:14:47"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "assignments": [
                                    5454
                                  ]
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "constant": false,
                                      "mutability": "mutable",
                                      "name": "lendingPoolAddr",
                                      "overrides": null,
                                      "scope": 5472,
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "type": "address",
                                      "value": null,
                                      "visibility": "internal"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address",
                                          "stateMutability": "nonpayable",
                                          "type": "address"
                                        },
                                        "id": 5453,
                                        "name": "ElementaryTypeName",
                                        "src": "806:7:47"
                                      }
                                    ],
                                    "id": 5454,
                                    "name": "VariableDeclaration",
                                    "src": "806:23:47"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "getLendingPool",
                                          "referencedDeclaration": 1147,
                                          "type": "function () view external returns (address)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "contract ILendingPoolAddressesProvider",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1253,
                                                  "type": "type(contract ILendingPoolAddressesProvider)",
                                                  "value": "ILendingPoolAddressesProvider"
                                                },
                                                "id": 5455,
                                                "name": "Identifier",
                                                "src": "832:29:47"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 5420,
                                                  "type": "address",
                                                  "value": "providerAddr"
                                                },
                                                "id": 5456,
                                                "name": "Identifier",
                                                "src": "862:12:47"
                                              }
                                            ],
                                            "id": 5457,
                                            "name": "FunctionCall",
                                            "src": "832:43:47"
                                          }
                                        ],
                                        "id": 5458,
                                        "name": "MemberAccess",
                                        "src": "832:58:47"
                                      }
                                    ],
                                    "id": 5459,
                                    "name": "FunctionCall",
                                    "src": "832:60:47"
                                  }
                                ],
                                "id": 5460,
                                "name": "VariableDeclarationStatement",
                                "src": "806:86:47"
                              },
                              {
                                "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_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "names": [
                                            "value"
                                          ],
                                          "type": "function (address,uint256,uint16) payable external"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "deposit",
                                              "referencedDeclaration": 1138,
                                              "type": "function (address,uint256,uint16) payable external"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "contract ILendingPool",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1139,
                                                      "type": "type(contract ILendingPool)",
                                                      "value": "ILendingPool"
                                                    },
                                                    "id": 5461,
                                                    "name": "Identifier",
                                                    "src": "897:12:47"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 5454,
                                                      "type": "address",
                                                      "value": "lendingPoolAddr"
                                                    },
                                                    "id": 5462,
                                                    "name": "Identifier",
                                                    "src": "910:15:47"
                                                  }
                                                ],
                                                "id": 5463,
                                                "name": "FunctionCall",
                                                "src": "897:29:47"
                                              }
                                            ],
                                            "id": 5464,
                                            "name": "MemberAccess",
                                            "src": "897:37:47"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5428,
                                              "type": "uint256",
                                              "value": "inputAmount"
                                            },
                                            "id": 5465,
                                            "name": "Identifier",
                                            "src": "942:11:47"
                                          }
                                        ],
                                        "id": 5466,
                                        "name": "FunctionCallOptions",
                                        "src": "897:57:47"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "address payable",
                                          "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                                        },
                                        "id": 5467,
                                        "name": "Literal",
                                        "src": "960:42:47"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5428,
                                          "type": "uint256",
                                          "value": "inputAmount"
                                        },
                                        "id": 5468,
                                        "name": "Identifier",
                                        "src": "1008:11:47"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "307830",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0x0"
                                        },
                                        "id": 5469,
                                        "name": "Literal",
                                        "src": "1025:3:47"
                                      }
                                    ],
                                    "id": 5470,
                                    "name": "FunctionCall",
                                    "src": "897:132:47"
                                  }
                                ],
                                "id": 5471,
                                "name": "ExpressionStatement",
                                "src": "897:132:47"
                              }
                            ],
                            "id": 5472,
                            "name": "Block",
                            "src": "781:253:47"
                          },
                          {
                            "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": 5422,
                                      "type": "uint8",
                                      "value": "inputType"
                                    },
                                    "id": 5473,
                                    "name": "Identifier",
                                    "src": "1044:9:47"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "33",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 3",
                                      "value": "3"
                                    },
                                    "id": 5474,
                                    "name": "Literal",
                                    "src": "1057:1:47"
                                  }
                                ],
                                "id": 5475,
                                "name": "BinaryOperation",
                                "src": "1044:14:47"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        5477
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "lendingPoolAddr",
                                          "overrides": null,
                                          "scope": 5512,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "address",
                                          "value": null,
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "address",
                                              "stateMutability": "nonpayable",
                                              "type": "address"
                                            },
                                            "id": 5476,
                                            "name": "ElementaryTypeName",
                                            "src": "1096:7:47"
                                          }
                                        ],
                                        "id": 5477,
                                        "name": "VariableDeclaration",
                                        "src": "1096:23:47"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "address",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "getLendingPool",
                                              "referencedDeclaration": 1147,
                                              "type": "function () view external returns (address)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "contract ILendingPoolAddressesProvider",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1253,
                                                      "type": "type(contract ILendingPoolAddressesProvider)",
                                                      "value": "ILendingPoolAddressesProvider"
                                                    },
                                                    "id": 5478,
                                                    "name": "Identifier",
                                                    "src": "1122:29:47"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 5420,
                                                      "type": "address",
                                                      "value": "providerAddr"
                                                    },
                                                    "id": 5479,
                                                    "name": "Identifier",
                                                    "src": "1152:12:47"
                                                  }
                                                ],
                                                "id": 5480,
                                                "name": "FunctionCall",
                                                "src": "1122:43:47"
                                              }
                                            ],
                                            "id": 5481,
                                            "name": "MemberAccess",
                                            "src": "1122:58:47"
                                          }
                                        ],
                                        "id": 5482,
                                        "name": "FunctionCall",
                                        "src": "1122:60:47"
                                      }
                                    ],
                                    "id": 5483,
                                    "name": "VariableDeclarationStatement",
                                    "src": "1096:86:47"
                                  },
                                  {
                                    "attributes": {
                                      "assignments": [
                                        5485
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "lendingPoolCoreAddr",
                                          "overrides": null,
                                          "scope": 5512,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "address",
                                          "value": null,
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "address",
                                              "stateMutability": "nonpayable",
                                              "type": "address"
                                            },
                                            "id": 5484,
                                            "name": "ElementaryTypeName",
                                            "src": "1187:7:47"
                                          }
                                        ],
                                        "id": 5485,
                                        "name": "VariableDeclaration",
                                        "src": "1187:27:47"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "address payable",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                null
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "getLendingPoolCore",
                                              "referencedDeclaration": 1157,
                                              "type": "function () view external returns (address payable)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "contract ILendingPoolAddressesProvider",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1253,
                                                      "type": "type(contract ILendingPoolAddressesProvider)",
                                                      "value": "ILendingPoolAddressesProvider"
                                                    },
                                                    "id": 5486,
                                                    "name": "Identifier",
                                                    "src": "1217:29:47"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 5420,
                                                      "type": "address",
                                                      "value": "providerAddr"
                                                    },
                                                    "id": 5487,
                                                    "name": "Identifier",
                                                    "src": "1247:12:47"
                                                  }
                                                ],
                                                "id": 5488,
                                                "name": "FunctionCall",
                                                "src": "1217:43:47"
                                              }
                                            ],
                                            "id": 5489,
                                            "name": "MemberAccess",
                                            "src": "1217:62:47"
                                          }
                                        ],
                                        "id": 5490,
                                        "name": "FunctionCall",
                                        "src": "1217:64:47"
                                      }
                                    ],
                                    "id": 5491,
                                    "name": "VariableDeclarationStatement",
                                    "src": "1187:94:47"
                                  },
                                  {
                                    "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_01a5b9574a9953405546c93774a74f0ce672623591bf9df1230dbca18099357b",
                                                  "typeString": "literal_string \"PairAToken: approve failed!\""
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                -18,
                                                -18
                                              ],
                                              "referencedDeclaration": -18,
                                              "type": "function (bool,string memory) pure",
                                              "value": "require"
                                            },
                                            "id": 5492,
                                            "name": "Identifier",
                                            "src": "1286:7:47"
                                          },
                                          {
                                            "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": 5493,
                                                        "name": "Identifier",
                                                        "src": "1299:5:47"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 5409,
                                                          "type": "address",
                                                          "value": "input"
                                                        },
                                                        "id": 5494,
                                                        "name": "Identifier",
                                                        "src": "1305:5:47"
                                                      }
                                                    ],
                                                    "id": 5495,
                                                    "name": "FunctionCall",
                                                    "src": "1299:12:47"
                                                  }
                                                ],
                                                "id": 5496,
                                                "name": "MemberAccess",
                                                "src": "1299:20:47"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 5485,
                                                  "type": "address",
                                                  "value": "lendingPoolCoreAddr"
                                                },
                                                "id": 5497,
                                                "name": "Identifier",
                                                "src": "1320:19:47"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 5428,
                                                  "type": "uint256",
                                                  "value": "inputAmount"
                                                },
                                                "id": 5498,
                                                "name": "Identifier",
                                                "src": "1341:11:47"
                                              }
                                            ],
                                            "id": 5499,
                                            "name": "FunctionCall",
                                            "src": "1299:54:47"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "5061697241546f6b656e3a20617070726f7665206661696c656421",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "string",
                                              "type": "literal_string \"PairAToken: approve failed!\"",
                                              "value": "PairAToken: approve failed!"
                                            },
                                            "id": 5500,
                                            "name": "Literal",
                                            "src": "1359:29:47"
                                          }
                                        ],
                                        "id": 5501,
                                        "name": "FunctionCall",
                                        "src": "1286:103:47"
                                      }
                                    ],
                                    "id": 5502,
                                    "name": "ExpressionStatement",
                                    "src": "1286:103:47"
                                  },
                                  {
                                    "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_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "deposit",
                                              "referencedDeclaration": 1138,
                                              "type": "function (address,uint256,uint16) payable external"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "contract ILendingPool",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1139,
                                                      "type": "type(contract ILendingPool)",
                                                      "value": "ILendingPool"
                                                    },
                                                    "id": 5503,
                                                    "name": "Identifier",
                                                    "src": "1394:12:47"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 5477,
                                                      "type": "address",
                                                      "value": "lendingPoolAddr"
                                                    },
                                                    "id": 5504,
                                                    "name": "Identifier",
                                                    "src": "1407:15:47"
                                                  }
                                                ],
                                                "id": 5505,
                                                "name": "FunctionCall",
                                                "src": "1394:29:47"
                                              }
                                            ],
                                            "id": 5506,
                                            "name": "MemberAccess",
                                            "src": "1394:37:47"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5409,
                                              "type": "address",
                                              "value": "input"
                                            },
                                            "id": 5507,
                                            "name": "Identifier",
                                            "src": "1432:5:47"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5428,
                                              "type": "uint256",
                                              "value": "inputAmount"
                                            },
                                            "id": 5508,
                                            "name": "Identifier",
                                            "src": "1439:11:47"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "307830",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0x0"
                                            },
                                            "id": 5509,
                                            "name": "Literal",
                                            "src": "1452:3:47"
                                          }
                                        ],
                                        "id": 5510,
                                        "name": "FunctionCall",
                                        "src": "1394:62:47"
                                      }
                                    ],
                                    "id": 5511,
                                    "name": "ExpressionStatement",
                                    "src": "1394:62:47"
                                  }
                                ],
                                "id": 5512,
                                "name": "Block",
                                "src": "1060:401:47"
                              }
                            ],
                            "id": 5513,
                            "name": "IfStatement",
                            "src": "1040:421:47"
                          }
                        ],
                        "id": 5514,
                        "name": "IfStatement",
                        "src": "761:700:47"
                      }
                    ],
                    "id": 5515,
                    "name": "IfStatement",
                    "src": "670:791:47"
                  },
                  {
                    "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_aa75948c4f2f5a8332553271788fc2954c01244bbd180138d70efed6cbce769b",
                                  "typeString": "literal_string \"PairAToken: transfer failed!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 5516,
                            "name": "Identifier",
                            "src": "1464:7:47"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "transfer",
                                  "referencedDeclaration": 346,
                                  "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": 5517,
                                        "name": "Identifier",
                                        "src": "1476:5:47"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5411,
                                          "type": "address",
                                          "value": "output"
                                        },
                                        "id": 5518,
                                        "name": "Identifier",
                                        "src": "1482:6:47"
                                      }
                                    ],
                                    "id": 5519,
                                    "name": "FunctionCall",
                                    "src": "1476:13:47"
                                  }
                                ],
                                "id": 5520,
                                "name": "MemberAccess",
                                "src": "1476:22:47"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5413,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 5521,
                                "name": "Identifier",
                                "src": "1499:2:47"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5428,
                                  "type": "uint256",
                                  "value": "inputAmount"
                                },
                                "id": 5522,
                                "name": "Identifier",
                                "src": "1503:11:47"
                              }
                            ],
                            "id": 5523,
                            "name": "FunctionCall",
                            "src": "1476:39:47"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5061697241546f6b656e3a207472616e73666572206661696c656421",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairAToken: transfer failed!\"",
                              "value": "PairAToken: transfer failed!"
                            },
                            "id": 5524,
                            "name": "Literal",
                            "src": "1520:30:47"
                          }
                        ],
                        "id": 5525,
                        "name": "FunctionCall",
                        "src": "1464:87:47"
                      }
                    ],
                    "id": 5526,
                    "name": "ExpressionStatement",
                    "src": "1464:87:47"
                  }
                ],
                "id": 5527,
                "name": "Block",
                "src": "545:1010:47"
              }
            ],
            "id": 5528,
            "name": "FunctionDefinition",
            "src": "438:1117:47"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "parseData",
              "overrides": null,
              "scope": 5578,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 5556,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 5529,
                        "name": "ElementaryTypeName",
                        "src": "1577:5:47"
                      }
                    ],
                    "id": 5530,
                    "name": "VariableDeclaration",
                    "src": "1577:17:47"
                  }
                ],
                "id": 5531,
                "name": "ParameterList",
                "src": "1576:19:47"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "providerAddr",
                      "overrides": null,
                      "scope": 5556,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5532,
                        "name": "ElementaryTypeName",
                        "src": "1618:7:47"
                      }
                    ],
                    "id": 5533,
                    "name": "VariableDeclaration",
                    "src": "1618:20:47"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "inputType",
                      "overrides": null,
                      "scope": 5556,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 5534,
                        "name": "ElementaryTypeName",
                        "src": "1640:5:47"
                      }
                    ],
                    "id": 5535,
                    "name": "VariableDeclaration",
                    "src": "1640:15:47"
                  }
                ],
                "id": 5536,
                "name": "ParameterList",
                "src": "1617:39:47"
              },
              {
                "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_a6498f699a33089f78ec1042dff2e7e2cfe0c253ebcce44666442bd21ed2185a",
                                  "typeString": "literal_string \"PairAToken: invalid data!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 5537,
                            "name": "Identifier",
                            "src": "1661:7:47"
                          },
                          {
                            "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": 5530,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 5538,
                                    "name": "Identifier",
                                    "src": "1669:4:47"
                                  }
                                ],
                                "id": 5539,
                                "name": "MemberAccess",
                                "src": "1669:11:47"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3231",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 21",
                                  "value": "21"
                                },
                                "id": 5540,
                                "name": "Literal",
                                "src": "1684:2:47"
                              }
                            ],
                            "id": 5541,
                            "name": "BinaryOperation",
                            "src": "1669:17:47"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5061697241546f6b656e3a20696e76616c6964206461746121",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairAToken: invalid data!\"",
                              "value": "PairAToken: invalid data!"
                            },
                            "id": 5542,
                            "name": "Literal",
                            "src": "1688:27:47"
                          }
                        ],
                        "id": 5543,
                        "name": "FunctionCall",
                        "src": "1661:55:47"
                      }
                    ],
                    "id": 5544,
                    "name": "ExpressionStatement",
                    "src": "1661:55:47"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5535,
                              "type": "uint8",
                              "value": "inputType"
                            },
                            "id": 5545,
                            "name": "Identifier",
                            "src": "1720:9:47"
                          },
                          {
                            "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": 5546,
                                    "name": "ElementaryTypeName",
                                    "src": "1732:5:47"
                                  }
                                ],
                                "id": 5547,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1732:5:47"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bytes1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5530,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 5548,
                                    "name": "Identifier",
                                    "src": "1738:4:47"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3230",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 20",
                                      "value": "20"
                                    },
                                    "id": 5549,
                                    "name": "Literal",
                                    "src": "1743:2:47"
                                  }
                                ],
                                "id": 5550,
                                "name": "IndexAccess",
                                "src": "1738:8:47"
                              }
                            ],
                            "id": 5551,
                            "name": "FunctionCall",
                            "src": "1732:15:47"
                          }
                        ],
                        "id": 5552,
                        "name": "Assignment",
                        "src": "1720:27:47"
                      }
                    ],
                    "id": 5553,
                    "name": "ExpressionStatement",
                    "src": "1720:27:47"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5530,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1796:4:47",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5533,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1770:12:47",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    providerAddr := mload(add(data, 20))\n}"
                    },
                    "children": [],
                    "id": 5554,
                    "name": "InlineAssembly",
                    "src": "1753:59:47"
                  }
                ],
                "id": 5555,
                "name": "Block",
                "src": "1657:158:47"
              }
            ],
            "id": 5556,
            "name": "FunctionDefinition",
            "src": "1558:257:47"
          },
          {
            "attributes": {
              "baseFunctions": [
                5324
              ],
              "documentation": null,
              "functionSelector": "7eace892",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getOutputAmount",
              "scope": 5578,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 5566,
                "name": "OverrideSpecifier",
                "src": "1912:8:47"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5573,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5557,
                        "name": "ElementaryTypeName",
                        "src": "1846:7:47"
                      }
                    ],
                    "id": 5558,
                    "name": "VariableDeclaration",
                    "src": "1846:7:47"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5573,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5559,
                        "name": "ElementaryTypeName",
                        "src": "1857:7:47"
                      }
                    ],
                    "id": 5560,
                    "name": "VariableDeclaration",
                    "src": "1857:7:47"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "overrides": null,
                      "scope": 5573,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5561,
                        "name": "ElementaryTypeName",
                        "src": "1868:4:47"
                      }
                    ],
                    "id": 5562,
                    "name": "VariableDeclaration",
                    "src": "1868:13:47"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5573,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 5563,
                        "name": "ElementaryTypeName",
                        "src": "1885:5:47"
                      }
                    ],
                    "id": 5564,
                    "name": "VariableDeclaration",
                    "src": "1885:14:47"
                  }
                ],
                "id": 5565,
                "name": "ParameterList",
                "src": "1842:60:47"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "overrides": null,
                      "scope": 5573,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5567,
                        "name": "ElementaryTypeName",
                        "src": "1930:4:47"
                      }
                    ],
                    "id": 5568,
                    "name": "VariableDeclaration",
                    "src": "1930:14:47"
                  }
                ],
                "id": 5569,
                "name": "ParameterList",
                "src": "1929:16:47"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5569
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 5562,
                          "type": "uint256",
                          "value": "amountIn"
                        },
                        "id": 5570,
                        "name": "Identifier",
                        "src": "1957:8:47"
                      }
                    ],
                    "id": 5571,
                    "name": "Return",
                    "src": "1950:15:47"
                  }
                ],
                "id": 5572,
                "name": "Block",
                "src": "1946:23:47"
              }
            ],
            "id": 5573,
            "name": "FunctionDefinition",
            "src": "1818:151:47"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "receive",
              "modifiers": [
                null
              ],
              "name": "",
              "overrides": null,
              "scope": 5578,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5574,
                "name": "ParameterList",
                "src": "1979:2:47"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5575,
                "name": "ParameterList",
                "src": "1999:0:47"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 5576,
                "name": "Block",
                "src": "1999:2:47"
              }
            ],
            "id": 5577,
            "name": "FunctionDefinition",
            "src": "1972:29:47"
          }
        ],
        "id": 5578,
        "name": "ContractDefinition",
        "src": "371:1632:47"
      }
    ],
    "id": 5579,
    "name": "SourceUnit",
    "src": "32:1971:47"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-02-07T17:50:42.820Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}