{
    "contractName": "AaveLiquidityProxy",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "contract ILendingPoolAddressesProvider",
                    "name": "lendingPoolAddressProvider",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "stateMutability": "payable",
            "type": "fallback"
        },
        {
            "stateMutability": "payable",
            "type": "receive"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                }
            ],
            "name": "getRepaymentAddress",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                }
            ],
            "name": "getTotalReserve",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenAmount",
                    "type": "uint256"
                }
            ],
            "name": "getRepaymentAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenAmount",
                    "type": "uint256"
                }
            ],
            "name": "borrow",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_reserve",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_fee",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "_params",
                    "type": "bytes"
                }
            ],
            "name": "executeOperation",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"lendingPoolAddressProvider\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getRepaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"getRepaymentAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getTotalReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol\":\"AaveLiquidityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvocationHook.sol\":{\"keccak256\":\"0x36fb31db8a8e7eed7038b37554582655826969a556005d8ee3ab5070fe034860\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e0dde70be03ea1e086a5bce0d3a7bb1ac65549eab7ea2618343255332edddca7\",\"dweb:/ipfs/QmVaQG686g3tbgM3L3mtw4ei1WxzcDRcS9UxipSt4KCYs1\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol\":{\"keccak256\":\"0x8a9fcbe16fdb00f3b5f32c528564cf4ba5c47ed9741a673973087d4d604e0b5a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b4af56bf9d2bd95bddca2156c6eea65c5caf0117d9a99d6cc575ac2c329bd672\",\"dweb:/ipfs/QmTxg3NpWNAxaVHKYU1cdVboo962auWmq5pmS9XvXcXNAF\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol\":{\"keccak256\":\"0x69e63e482d839c831c8c32f002e6454f6a8d9e602b39e9cdc1c0649451df3337\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0a40661372b8f95cbed7714a16323b435ccbe85205178d32bc6012e47bfc0640\",\"dweb:/ipfs/QmTyHr1Ag4AkcyazzTT5GDcWabAMHPTrELoGhL85ZWDgBy\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/ExternalCaller.sol\":{\"keccak256\":\"0x54f88a1f0ac5dd7ab99a0519124cb09f1e19b4efb9baf240bc2500f8caa0b4ff\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3170671378d20b47498224d065e33fccc223ae772d7f0af2c5ef314f94b75c98\",\"dweb:/ipfs/Qme8ZEEBnBG5Vvj8uyJCD2YVPcLx6funKsSSCpGkTyn1zi\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol\":{\"keccak256\":\"0xd463abb162d0ce2e2d1a5f80b6b1254857e8800b930b4d8d1c3557c444d6363d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1c65c049566e4b8586ffb7ab62018d49f09d8f915450f6e79a0db84e4500fffb\",\"dweb:/ipfs/QmNSjMiWsY2Tt9eMYyNf3oGTFWDJjnWpgmVWTY6zKBAy3f\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol\":{\"keccak256\":\"0x9b821df2d33aba73b8e82e34f42a546d4251da3eaf2cfde456eaba76779028b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d4d9f0dfdff1685b0b155223eefacf1b55524a050711922c5ce0ad334e2e5567\",\"dweb:/ipfs/QmQpjn3eP7ctXUqqcwe8vCLyqvfxmrT5vGsfy6A543oDAm\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPool.sol\":{\"keccak256\":\"0x9e97f4e47e98a1ade637d849dc0fd02e530a8bad4f80b41606bb4bb554484951\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e6a4d959bb2cc99001596ff02633c3c53a3eca753859d6c458abe40817738c8\",\"dweb:/ipfs/QmTEwfaKaf9tfAuEiqKLid1RtcrJY5sd5kCCgsnqBacTAM\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0xbadf15d542d9a305bd83bbf2ea5598bb8a4b51cc23dd3fb6884939fdf501be6f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://69252ae62cca09c7d8341e637bf0c4fde7c6c8c3827456d8921ae0dbf95dfd8e\",\"dweb:/ipfs/QmU9JMmtZNbDveDCzgsTPsQkga4zhr8JAKbZchDvmcECkK\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolCore.sol\":{\"keccak256\":\"0x0a7a1d395d6ff90fe31aaaf58481d325581d74a9a143e027d2bba93e6efdd6ef\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c8bcb84aa556a504882753e5a8eebabc0e90bf7e49527cbd2507a192e0d05ee5\",\"dweb:/ipfs/QmbgfHBVyw6ppaLiPXKV5bp3FxCYU6pxRxtQciVQEBEvc1\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x5e3cbf60f6b1d1707876c03194566b5b983fde316e5e2ea6bb462c8ccd1f9ba3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c87a747a9ad781091b9691bdae1916c21c86df798740f2e026b73ed3b69d814\",\"dweb:/ipfs/QmXyZQPyJhWvXPDWmAbZieDqBAzKsybDGbrjXQB6aydF3Z\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xba96bc371ba999f452985a98717cca1e4c4abb598dc038a9a9c3db08129b1ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e50e3f7b6482fb6f598f2e006994a74aa492687daa4b3eee7fd4fb5398ce7f\",\"dweb:/ipfs/QmZudqoPSkA4USLMFsBBmt19dDPZFS8aaAmL5R7pECXu6t\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}",
    "bytecode": "0x608060405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506040516113523803806113528339818101604052602081101561008857600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506112048061014e6000396000f3fe60806040526004361061004e5760003560e01c80634b8a352914610057578063680c7b94146100b2578063aa8190571461012d578063c32dc3b61461019c578063ee8725581461020157610055565b3661005557005b005b34801561006357600080fd5b506100b06004803603604081101561007a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102bb565b005b3480156100be57600080fd5b50610101600480360360208110156100d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104ad565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013957600080fd5b506101866004803603604081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610559565b6040518082815260200191505060405180910390f35b3480156101a857600080fd5b506101eb600480360360208110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106dc565b6040518082815260200191505060405180910390f35b34801561020d57600080fd5b506102b96004803603608081101561022457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561027557600080fd5b82018360208201111561028757600080fd5b803590602001918460018302840111640100000000831117156102a957600080fd5b9091929391929390505050610899565b005b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d602081101561039057600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16635cffe9de306103c986610a52565b856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d602081101561054157600080fd5b81019080805190602001909291905050509050919050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304061d8e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b810190808051906020019092919050505090506000808273ffffffffffffffffffffffffffffffffffffffff1663586feb406040518163ffffffff1660e01b8152600401604080518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d604081101561067357600080fd5b8101908080519060200190929190805190602001909291905050509150915060006106bb6127106106ad8589610ab990919063ffffffff16565b610b3f90919063ffffffff16565b90506106d08187610b8990919063ffffffff16565b94505050505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561074757600080fd5b505afa15801561075b573d6000803e3d6000fd5b505050506040513d602081101561077157600080fd5b8101908080519060200190929190505050905061078d83610c11565b1561088e57600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461086d578273ffffffffffffffffffffffffffffffffffffffff166370a08231826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d602081101561085757600080fd5b8101908080519060200190929190505050610886565b8073ffffffffffffffffffffffffffffffffffffffff16315b915050610894565b60009150505b919050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111356021913960400191505060405180910390fd5b61096e85600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610d6b565b6109c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611180602e913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8e5781610ab2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b9050919050565b600080831415610acc5760009050610b39565b6000828402905082848281610add57fe5b0414610b34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111ae6021913960400191505060405180910390fd5b809150505b92915050565b6000610b8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e8b565b905092915050565b600080828401905083811015610c07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7c57600080fd5b505afa158015610c90573d6000803e3d6000fd5b505050506040513d6020811015610ca657600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166305075d6e610cde85610a52565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6020811015610d5257600080fd5b8101908080519060200190929190505050915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610dd557610dcc8383610f51565b60019050610e84565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e4657600080fd5b505af1158015610e5a573d6000803e3d6000fd5b505050506040513d6020811015610e7057600080fd5b810190808051906020019092919050505090505b9392505050565b60008083118290610f37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610efc578082015181840152602081019050610ee1565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610f4357fe5b049050809150509392505050565b80471015610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611156602a913960400191505060405180910390fd5b610fc4828260405180602001604052806000815250610fc8565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106110185780518252602082019150602081019050602083039250610ff5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461107a576040519150601f19603f3d011682016040523d82523d6000602084013e61107f565b606091505b509150915081819061112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110f15780820151818401526020810190506110d6565b50505050905090810190601f16801561111e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505056fe416176654c697175696469747950726f78793a206e6f74207363686564756c656445787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e6365416176654c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122017aa1e930efb28102c4e47be8bad5e5b62baa272edbc333b2a466541064bebb964736f6c63430007030033",
    "deployedBytecode": "0x60806040526004361061004e5760003560e01c80634b8a352914610057578063680c7b94146100b2578063aa8190571461012d578063c32dc3b61461019c578063ee8725581461020157610055565b3661005557005b005b34801561006357600080fd5b506100b06004803603604081101561007a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102bb565b005b3480156100be57600080fd5b50610101600480360360208110156100d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104ad565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013957600080fd5b506101866004803603604081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610559565b6040518082815260200191505060405180910390f35b3480156101a857600080fd5b506101eb600480360360208110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106dc565b6040518082815260200191505060405180910390f35b34801561020d57600080fd5b506102b96004803603608081101561022457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561027557600080fd5b82018360208201111561028757600080fd5b803590602001918460018302840111640100000000831117156102a957600080fd5b9091929391929390505050610899565b005b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d602081101561039057600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16635cffe9de306103c986610a52565b856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d602081101561054157600080fd5b81019080805190602001909291905050509050919050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304061d8e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b810190808051906020019092919050505090506000808273ffffffffffffffffffffffffffffffffffffffff1663586feb406040518163ffffffff1660e01b8152600401604080518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d604081101561067357600080fd5b8101908080519060200190929190805190602001909291905050509150915060006106bb6127106106ad8589610ab990919063ffffffff16565b610b3f90919063ffffffff16565b90506106d08187610b8990919063ffffffff16565b94505050505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561074757600080fd5b505afa15801561075b573d6000803e3d6000fd5b505050506040513d602081101561077157600080fd5b8101908080519060200190929190505050905061078d83610c11565b1561088e57600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461086d578273ffffffffffffffffffffffffffffffffffffffff166370a08231826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d602081101561085757600080fd5b8101908080519060200190929190505050610886565b8073ffffffffffffffffffffffffffffffffffffffff16315b915050610894565b60009150505b919050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111356021913960400191505060405180910390fd5b61096e85600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610d6b565b6109c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611180602e913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8e5781610ab2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b9050919050565b600080831415610acc5760009050610b39565b6000828402905082848281610add57fe5b0414610b34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111ae6021913960400191505060405180910390fd5b809150505b92915050565b6000610b8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e8b565b905092915050565b600080828401905083811015610c07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7c57600080fd5b505afa158015610c90573d6000803e3d6000fd5b505050506040513d6020811015610ca657600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166305075d6e610cde85610a52565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6020811015610d5257600080fd5b8101908080519060200190929190505050915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610dd557610dcc8383610f51565b60019050610e84565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e4657600080fd5b505af1158015610e5a573d6000803e3d6000fd5b505050506040513d6020811015610e7057600080fd5b810190808051906020019092919050505090505b9392505050565b60008083118290610f37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610efc578082015181840152602081019050610ee1565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610f4357fe5b049050809150509392505050565b80471015610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611156602a913960400191505060405180910390fd5b610fc4828260405180602001604052806000815250610fc8565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106110185780518252602082019150602081019050602083039250610ff5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461107a576040519150601f19603f3d011682016040523d82523d6000602084013e61107f565b606091505b509150915081819061112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110f15780820151818401526020810190506110d6565b50505050905090810190601f16801561111e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505056fe416176654c697175696469747950726f78793a206e6f74207363686564756c656445787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e6365416176654c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122017aa1e930efb28102c4e47be8bad5e5b62baa272edbc333b2a466541064bebb964736f6c63430007030033",
    "immutableReferences": {},
    "generatedSources": [],
    "deployedGeneratedSources": [],
    "sourceMap": "1054:3250:16:-:0;;;1203:42;1156:89;;;;;;;;;;;;;;;;;;;;1380:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1473:19;;;;;;;;;;;916:15:7;897:16;;:34;;;;;;;;;;;;;;;;;;850:88;1538:26:16::1;1508:27;;:56;;;;;;;;;;;;;;;;;;1380:191:::0;1054:3250;;;;;;",
    "deployedSourceMap": "1054:3250:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2811:469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1648:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2293:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1854:433;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3286:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2811:469;2944:10;2918:23;;:36;;;;;;;;;;;;;;;;;;2965:24;3018:27;;;;;;;;;;;:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2965:107;;3082:11;:21;;;3125:4;3144:31;3162:12;3144:17;:31::i;:::-;3189:11;3082:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3271:1;3237:23;;:36;;;;;;;;;;;;;;;;;;2811:469;;;:::o;1648:200::-;1763:7;1793:27;;;;;;;;;;;:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1786:55;;1648:200;;;:::o;2293:512::-;2428:7;2451:37;2535:27;;;;;;;;;;;:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:156;;2618:20;2640:9;2653:6;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2617:67;;;;2695:17;2715:40;2749:5;2715:29;2731:12;2715:11;:15;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;2695:60;;2772:26;2788:9;2772:11;:15;;:26;;;;:::i;:::-;2765:33;;;;;;2293:512;;;;:::o;1854:433::-;1965:7;1988:12;2003:27;;;;;;;;;;;:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1988:63;;2066:26;2079:12;2066;:26::i;:::-;2062:200;;;2155:1;2131:26;;:12;:26;;;:120;;2222:12;2215:30;;;2246:4;2215:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:120;;;2180:4;:12;;;2131:120;2108:143;;;;;2062:200;2279:1;2272:8;;;1854:433;;;;:::o;3286:533::-;3498:1;3463:37;;:23;;;;;;;;;;;:37;;;;3442:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3591:52;3600:8;3610:23;;;;;;;;;;;3635:7;3591:8;:52::i;:::-;3570:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3726:16;3754:23;;;;;;;;;;;3726:52;;3788:7;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3286:533;;;;;;:::o;4106:196::-;4202:7;4256:1;4232:26;;:12;:26;;;:63;;4283:12;4232:63;;;4261:19;;;;;;;;;;;4232:63;4225:70;;4106:196;;;:::o;2180:459:40:-;2238:7;2484:1;2479;:6;2475:45;;;2508:1;2501:8;;;;2475:45;2530:9;2546:1;2542;:5;2530:17;;2574:1;2569;2565;:5;;;;;;:10;2557:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:1;2624:8;;;2180:459;;;;;:::o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3178:46;;3101:130;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;3825:275:16:-;3892:4;3908:21;3962:27;;;;;;;;;;;:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3908:112;;4037:4;:23;;;4061:31;4079:12;4061:17;:31::i;:::-;4037:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:63;;;3825:275;;;:::o;944:333:7:-;1060:4;1096:16;;;;;;;;;;;1080:32;;:12;:32;;;1076:195;;;1128:28;1145:2;1149:6;1128:16;:28::i;:::-;1177:4;1170:11;;;;1076:195;1226:12;1219:29;;;1249:2;1253:6;1219:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1212:48;;944:333;;;;;;:::o;3713:272:40:-;3799:7;3830:1;3826;:5;3833:12;3818:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;3856:17;;3977:1;3970:8;;;3713:272;;;;;:::o;695:240:9:-;815:6;790:21;:31;;769:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;899:29;912:3;917:6;899:29;;;;;;;;;;;;:12;:29::i;:::-;695:240;;:::o;941:267::-;1062:12;1076:23;1103:3;:8;;1119:6;1140:5;1103:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:94;;;;1173:7;1189:10;1165:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:267;;;;;:::o",
    "source": "/*\n\n    Copyright 2020 Kollateral LLC.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\n// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.7.0;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../../common/utils/BalanceCarrier.sol\";\nimport \"../../common/invoke/IInvoker.sol\";\nimport \"../ILiquidityProxy.sol\";\nimport \"./ILendingPoolAddressesProvider.sol\";\nimport \"./ILendingPool.sol\";\nimport \"./ILendingPoolCore.sol\";\nimport \"./ILendingPoolParametersProvider.sol\";\n\ncontract AaveLiquidityProxy is ILiquidityProxy, BalanceCarrier {\n    using SafeMath for uint256;\n\n    address\n        internal ETHER_TOKEN_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\n\n    ILendingPoolAddressesProvider internal _lendingPoolAddressProvider;\n\n    address payable internal _scheduleInvokerAddress;\n\n    constructor(ILendingPoolAddressesProvider lendingPoolAddressProvider)\n        BalanceCarrier(ETHER_TOKEN_ADDRESS)\n    {\n        _lendingPoolAddressProvider = lendingPoolAddressProvider;\n    }\n\n    receive() external payable {}\n\n    fallback() external payable {}\n\n    function getRepaymentAddress(address tokenAddress)\n        external\n        view\n        override\n        returns (address)\n    {\n        return _lendingPoolAddressProvider.getLendingPoolCore();\n    }\n\n    function getTotalReserve(address tokenAddress)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        address core = _lendingPoolAddressProvider.getLendingPoolCore();\n\n        if (isRegistered(tokenAddress)) {\n            return\n                tokenAddress == address(1)\n                    ? core.balance\n                    : IERC20(tokenAddress).balanceOf(core);\n        }\n\n        return 0;\n    }\n\n    function getRepaymentAmount(address tokenAddress, uint256 tokenAmount)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        ILendingPoolParametersProvider params = ILendingPoolParametersProvider(\n            _lendingPoolAddressProvider.getLendingPoolParametersProvider()\n        );\n        (uint256 totalFeeBips, uint256 _) = params.getFlashLoanFeesInBips();\n\n        uint256 amountFee = tokenAmount.mul(totalFeeBips).div(10000);\n        return tokenAmount.add(amountFee);\n    }\n\n    function borrow(address tokenAddress, uint256 tokenAmount)\n        external\n        override\n    {\n        _scheduleInvokerAddress = msg.sender;\n\n        ILendingPool lendingPool = ILendingPool(\n            _lendingPoolAddressProvider.getLendingPool()\n        );\n        lendingPool.flashLoan(\n            address(this),\n            remapTokenAddress(tokenAddress),\n            tokenAmount,\n            \"\"\n        );\n\n        _scheduleInvokerAddress = address(0);\n    }\n\n    function executeOperation(\n        address _reserve,\n        uint256 _amount,\n        uint256 _fee,\n        bytes calldata _params\n    ) external {\n        require(\n            _scheduleInvokerAddress != address(0),\n            \"AaveLiquidityProxy: not scheduled\"\n        );\n\n        require(\n            transfer(_reserve, _scheduleInvokerAddress, _amount),\n            \"AaveLiquidityProxy: transfer to invoker failed\"\n        );\n\n        IInvoker invoker = IInvoker(_scheduleInvokerAddress);\n        invoker.invokeCallback();\n    }\n\n    function isRegistered(address tokenAddress) internal view returns (bool) {\n        ILendingPoolCore core = ILendingPoolCore(\n            _lendingPoolAddressProvider.getLendingPoolCore()\n        );\n        return core.getReserveIsActive(remapTokenAddress(tokenAddress));\n    }\n\n    function remapTokenAddress(address tokenAddress)\n        internal\n        view\n        returns (address)\n    {\n        return tokenAddress == address(1) ? ETHER_TOKEN_ADDRESS : tokenAddress;\n    }\n}\n",
    "sourcePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol",
    "ast": {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol",
        "exportedSymbols": {
            "AaveLiquidityProxy": [
                2414
            ],
            "BalanceCarrier": [
                1464
            ],
            "ExternalCaller": [
                1563
            ],
            "IERC20": [
                6165
            ],
            "IInvocationHook": [
                1170
            ],
            "IInvoker": [
                1234
            ],
            "ILendingPool": [
                2428
            ],
            "ILendingPoolAddressesProvider": [
                2446
            ],
            "ILendingPoolCore": [
                2456
            ],
            "ILendingPoolParametersProvider": [
                2466
            ],
            "ILiquidityProxy": [
                2148
            ],
            "SafeMath": [
                5584
            ]
        },
        "id": 2415,
        "license": "Apache-2.0",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 2150,
                "literals": [
                    "solidity",
                    "^",
                    "0.7",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "640:23:16"
            },
            {
                "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
                "file": "@openzeppelin/contracts/math/SafeMath.sol",
                "id": 2151,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 5585,
                "src": "665:51:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "id": 2152,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 6166,
                "src": "717:56:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
                "file": "../../common/utils/BalanceCarrier.sol",
                "id": 2153,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 1465,
                "src": "774:47:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
                "file": "../../common/invoke/IInvoker.sol",
                "id": 2154,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 1235,
                "src": "822:42:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
                "file": "../ILiquidityProxy.sol",
                "id": 2155,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 2149,
                "src": "865:32:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolAddressesProvider.sol",
                "file": "./ILendingPoolAddressesProvider.sol",
                "id": 2156,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 2447,
                "src": "898:45:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPool.sol",
                "file": "./ILendingPool.sol",
                "id": 2157,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 2429,
                "src": "944:28:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolCore.sol",
                "file": "./ILendingPoolCore.sol",
                "id": 2158,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 2457,
                "src": "973:32:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolParametersProvider.sol",
                "file": "./ILendingPoolParametersProvider.sol",
                "id": 2159,
                "nodeType": "ImportDirective",
                "scope": 2415,
                "sourceUnit": 2467,
                "src": "1006:46:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 2160,
                            "name": "ILiquidityProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2148,
                            "src": "1085:15:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                "typeString": "contract ILiquidityProxy"
                            }
                        },
                        "id": 2161,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1085:15:16"
                    },
                    {
                        "baseName": {
                            "id": 2162,
                            "name": "BalanceCarrier",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1464,
                            "src": "1102:14:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BalanceCarrier_$1464",
                                "typeString": "contract BalanceCarrier"
                            }
                        },
                        "id": 2163,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1102:14:16"
                    }
                ],
                "contractDependencies": [
                    1464,
                    1563,
                    2148
                ],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 2414,
                "linearizedBaseContracts": [
                    2414,
                    1464,
                    1563,
                    2148
                ],
                "name": "AaveLiquidityProxy",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 2166,
                        "libraryName": {
                            "id": 2164,
                            "name": "SafeMath",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5584,
                            "src": "1129:8:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_SafeMath_$5584",
                                "typeString": "library SafeMath"
                            }
                        },
                        "nodeType": "UsingForDirective",
                        "src": "1123:27:16",
                        "typeName": {
                            "id": 2165,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1142:7:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "constant": false,
                        "id": 2169,
                        "mutability": "mutable",
                        "name": "ETHER_TOKEN_ADDRESS",
                        "nodeType": "VariableDeclaration",
                        "scope": 2414,
                        "src": "1156:89:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 2167,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1156:7:16",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "value": {
                            "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                            "id": 2168,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1203:42:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                            },
                            "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 2171,
                        "mutability": "mutable",
                        "name": "_lendingPoolAddressProvider",
                        "nodeType": "VariableDeclaration",
                        "scope": 2414,
                        "src": "1252:66:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                            "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                            "id": 2170,
                            "name": "ILendingPoolAddressesProvider",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2446,
                            "src": "1252:29:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                "typeString": "contract ILendingPoolAddressesProvider"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 2173,
                        "mutability": "mutable",
                        "name": "_scheduleInvokerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 2414,
                        "src": "1325:48:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                        },
                        "typeName": {
                            "id": 2172,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1325:15:16",
                            "stateMutability": "payable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 2185,
                            "nodeType": "Block",
                            "src": "1498:73:16",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 2183,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 2181,
                                            "name": "_lendingPoolAddressProvider",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2171,
                                            "src": "1508:27:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                                "typeString": "contract ILendingPoolAddressesProvider"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2182,
                                            "name": "lendingPoolAddressProvider",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2175,
                                            "src": "1538:26:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                                "typeString": "contract ILendingPoolAddressesProvider"
                                            }
                                        },
                                        "src": "1508:56:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                            "typeString": "contract ILendingPoolAddressesProvider"
                                        }
                                    },
                                    "id": 2184,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1508:56:16"
                                }
                            ]
                        },
                        "id": 2186,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "id": 2178,
                                        "name": "ETHER_TOKEN_ADDRESS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2169,
                                        "src": "1473:19:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                ],
                                "id": 2179,
                                "modifierName": {
                                    "id": 2177,
                                    "name": "BalanceCarrier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1464,
                                    "src": "1458:14:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BalanceCarrier_$1464_$",
                                        "typeString": "type(contract BalanceCarrier)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1458:35:16"
                            }
                        ],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2176,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2175,
                                    "mutability": "mutable",
                                    "name": "lendingPoolAddressProvider",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2186,
                                    "src": "1392:56:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                        "typeString": "contract ILendingPoolAddressesProvider"
                                    },
                                    "typeName": {
                                        "id": 2174,
                                        "name": "ILendingPoolAddressesProvider",
                                        "nodeType": "UserDefinedTypeName",
                                        "referencedDeclaration": 2446,
                                        "src": "1392:29:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                            "typeString": "contract ILendingPoolAddressesProvider"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1391:58:16"
                        },
                        "returnParameters": {
                            "id": 2180,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1498:0:16"
                        },
                        "scope": 2414,
                        "src": "1380:191:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 2189,
                            "nodeType": "Block",
                            "src": "1604:2:16",
                            "statements": []
                        },
                        "id": 2190,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2187,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1584:2:16"
                        },
                        "returnParameters": {
                            "id": 2188,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1604:0:16"
                        },
                        "scope": 2414,
                        "src": "1577:29:16",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2193,
                            "nodeType": "Block",
                            "src": "1640:2:16",
                            "statements": []
                        },
                        "id": 2194,
                        "implemented": true,
                        "kind": "fallback",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2191,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1620:2:16"
                        },
                        "returnParameters": {
                            "id": 2192,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1640:0:16"
                        },
                        "scope": 2414,
                        "src": "1612:30:16",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2131
                        ],
                        "body": {
                            "id": 2206,
                            "nodeType": "Block",
                            "src": "1776:72:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 2202,
                                                "name": "_lendingPoolAddressProvider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2171,
                                                "src": "1793:27:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                                    "typeString": "contract ILendingPoolAddressesProvider"
                                                }
                                            },
                                            "id": 2203,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getLendingPoolCore",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2440,
                                            "src": "1793:46:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_payable_$",
                                                "typeString": "function () view external returns (address payable)"
                                            }
                                        },
                                        "id": 2204,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1793:48:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "functionReturnParameters": 2201,
                                    "id": 2205,
                                    "nodeType": "Return",
                                    "src": "1786:55:16"
                                }
                            ]
                        },
                        "functionSelector": "680c7b94",
                        "id": 2207,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRepaymentAddress",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 2198,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1737:8:16"
                        },
                        "parameters": {
                            "id": 2197,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2196,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2207,
                                    "src": "1677:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2195,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1677:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1676:22:16"
                        },
                        "returnParameters": {
                            "id": 2201,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2200,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2207,
                                    "src": "1763:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2199,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1763:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1762:9:16"
                        },
                        "scope": 2414,
                        "src": "1648:200:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2124
                        ],
                        "body": {
                            "id": 2244,
                            "nodeType": "Block",
                            "src": "1978:309:16",
                            "statements": [
                                {
                                    "assignments": [
                                        2216
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2216,
                                            "mutability": "mutable",
                                            "name": "core",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2244,
                                            "src": "1988:12:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 2215,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1988:7:16",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2220,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 2217,
                                                "name": "_lendingPoolAddressProvider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2171,
                                                "src": "2003:27:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                                    "typeString": "contract ILendingPoolAddressesProvider"
                                                }
                                            },
                                            "id": 2218,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getLendingPoolCore",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2440,
                                            "src": "2003:46:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_payable_$",
                                                "typeString": "function () view external returns (address payable)"
                                            }
                                        },
                                        "id": 2219,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2003:48:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1988:63:16"
                                },
                                {
                                    "condition": {
                                        "arguments": [
                                            {
                                                "id": 2222,
                                                "name": "tokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2209,
                                                "src": "2079:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2221,
                                            "name": "isRegistered",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2395,
                                            "src": "2066:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                "typeString": "function (address) view returns (bool)"
                                            }
                                        },
                                        "id": 2223,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2066:26:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2241,
                                    "nodeType": "IfStatement",
                                    "src": "2062:200:16",
                                    "trueBody": {
                                        "id": 2240,
                                        "nodeType": "Block",
                                        "src": "2094:168:16",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 2229,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 2224,
                                                            "name": "tokenAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2209,
                                                            "src": "2131:12:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "31",
                                                                    "id": 2227,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2155:1:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    }
                                                                ],
                                                                "id": 2226,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "2147:7:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 2225,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "2147:7:16",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 2228,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2147:10:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        },
                                                        "src": "2131:26:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 2236,
                                                                "name": "core",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2216,
                                                                "src": "2246:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 2233,
                                                                        "name": "tokenAddress",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2209,
                                                                        "src": "2222:12:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 2232,
                                                                    "name": "IERC20",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6165,
                                                                    "src": "2215:6:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$6165_$",
                                                                        "typeString": "type(contract IERC20)"
                                                                    }
                                                                },
                                                                "id": 2234,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2215:20:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$6165",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 2235,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "balanceOf",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 6104,
                                                            "src": "2215:30:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                "typeString": "function (address) view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 2237,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2215:36:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 2238,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "2131:120:16",
                                                    "trueExpression": {
                                                        "expression": {
                                                            "id": 2230,
                                                            "name": "core",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2216,
                                                            "src": "2180:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 2231,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balance",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2180:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2214,
                                                "id": 2239,
                                                "nodeType": "Return",
                                                "src": "2108:143:16"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "hexValue": "30",
                                        "id": 2242,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2279:1:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                    },
                                    "functionReturnParameters": 2214,
                                    "id": 2243,
                                    "nodeType": "Return",
                                    "src": "2272:8:16"
                                }
                            ]
                        },
                        "functionSelector": "c32dc3b6",
                        "id": 2245,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getTotalReserve",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 2211,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1939:8:16"
                        },
                        "parameters": {
                            "id": 2210,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2209,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2245,
                                    "src": "1879:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2208,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1879:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1878:22:16"
                        },
                        "returnParameters": {
                            "id": 2214,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2213,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2245,
                                    "src": "1965:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2212,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1965:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1964:9:16"
                        },
                        "scope": 2414,
                        "src": "1854:433:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2140
                        ],
                        "body": {
                            "id": 2286,
                            "nodeType": "Block",
                            "src": "2441:364:16",
                            "statements": [
                                {
                                    "assignments": [
                                        2256
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2256,
                                            "mutability": "mutable",
                                            "name": "params",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2286,
                                            "src": "2451:37:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILendingPoolParametersProvider_$2466",
                                                "typeString": "contract ILendingPoolParametersProvider"
                                            },
                                            "typeName": {
                                                "id": 2255,
                                                "name": "ILendingPoolParametersProvider",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 2466,
                                                "src": "2451:30:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPoolParametersProvider_$2466",
                                                    "typeString": "contract ILendingPoolParametersProvider"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2262,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                        "id": 2258,
                                                        "name": "_lendingPoolAddressProvider",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2171,
                                                        "src": "2535:27:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                                            "typeString": "contract ILendingPoolAddressesProvider"
                                                        }
                                                    },
                                                    "id": 2259,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getLendingPoolParametersProvider",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2445,
                                                    "src": "2535:60:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                        "typeString": "function () view external returns (address)"
                                                    }
                                                },
                                                "id": 2260,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2535:62:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2257,
                                            "name": "ILendingPoolParametersProvider",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2466,
                                            "src": "2491:30:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_ILendingPoolParametersProvider_$2466_$",
                                                "typeString": "type(contract ILendingPoolParametersProvider)"
                                            }
                                        },
                                        "id": 2261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2491:116:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILendingPoolParametersProvider_$2466",
                                            "typeString": "contract ILendingPoolParametersProvider"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2451:156:16"
                                },
                                {
                                    "assignments": [
                                        2264,
                                        2266
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2264,
                                            "mutability": "mutable",
                                            "name": "totalFeeBips",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2286,
                                            "src": "2618:20:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2263,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2618:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2266,
                                            "mutability": "mutable",
                                            "name": "_",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2286,
                                            "src": "2640:9:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2265,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2640:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2270,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 2267,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2256,
                                                "src": "2653:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPoolParametersProvider_$2466",
                                                    "typeString": "contract ILendingPoolParametersProvider"
                                                }
                                            },
                                            "id": 2268,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getFlashLoanFeesInBips",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2465,
                                            "src": "2653:29:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_pure$__$returns$_t_uint256_$_t_uint256_$",
                                                "typeString": "function () pure external returns (uint256,uint256)"
                                            }
                                        },
                                        "id": 2269,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2653:31:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                            "typeString": "tuple(uint256,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2617:67:16"
                                },
                                {
                                    "assignments": [
                                        2272
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2272,
                                            "mutability": "mutable",
                                            "name": "amountFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2286,
                                            "src": "2695:17:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2271,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2695:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2280,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "3130303030",
                                                "id": 2278,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2749:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10000_by_1",
                                                    "typeString": "int_const 10000"
                                                },
                                                "value": "10000"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_10000_by_1",
                                                    "typeString": "int_const 10000"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 2275,
                                                        "name": "totalFeeBips",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2264,
                                                        "src": "2731:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 2273,
                                                        "name": "tokenAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2249,
                                                        "src": "2715:11:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 2274,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 5497,
                                                    "src": "2715:15:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 2276,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2715:29:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 2277,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "div",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5514,
                                            "src": "2715:33:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 2279,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2715:40:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2695:60:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2283,
                                                "name": "amountFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2272,
                                                "src": "2788:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2281,
                                                "name": "tokenAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2249,
                                                "src": "2772:11:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 2282,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5417,
                                            "src": "2772:15:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 2284,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2772:26:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 2254,
                                    "id": 2285,
                                    "nodeType": "Return",
                                    "src": "2765:33:16"
                                }
                            ]
                        },
                        "functionSelector": "aa819057",
                        "id": 2287,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRepaymentAmount",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 2251,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2402:8:16"
                        },
                        "parameters": {
                            "id": 2250,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2247,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2287,
                                    "src": "2321:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2246,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2321:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2249,
                                    "mutability": "mutable",
                                    "name": "tokenAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2287,
                                    "src": "2343:19:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2248,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2343:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2320:43:16"
                        },
                        "returnParameters": {
                            "id": 2254,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2253,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2287,
                                    "src": "2428:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2252,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2428:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2427:9:16"
                        },
                        "scope": 2414,
                        "src": "2293:512:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2147
                        ],
                        "body": {
                            "id": 2329,
                            "nodeType": "Block",
                            "src": "2908:372:16",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 2298,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 2295,
                                            "name": "_scheduleInvokerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2173,
                                            "src": "2918:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "id": 2296,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "2944:3:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                }
                                            },
                                            "id": 2297,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "2944:10:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "2918:36:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "id": 2299,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2918:36:16"
                                },
                                {
                                    "assignments": [
                                        2301
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2301,
                                            "mutability": "mutable",
                                            "name": "lendingPool",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2329,
                                            "src": "2965:24:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILendingPool_$2428",
                                                "typeString": "contract ILendingPool"
                                            },
                                            "typeName": {
                                                "id": 2300,
                                                "name": "ILendingPool",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 2428,
                                                "src": "2965:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPool_$2428",
                                                    "typeString": "contract ILendingPool"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2307,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                        "id": 2303,
                                                        "name": "_lendingPoolAddressProvider",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2171,
                                                        "src": "3018:27:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                                            "typeString": "contract ILendingPoolAddressesProvider"
                                                        }
                                                    },
                                                    "id": 2304,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getLendingPool",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2435,
                                                    "src": "3018:42:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                        "typeString": "function () view external returns (address)"
                                                    }
                                                },
                                                "id": 2305,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3018:44:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2302,
                                            "name": "ILendingPool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2428,
                                            "src": "2992:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_ILendingPool_$2428_$",
                                                "typeString": "type(contract ILendingPool)"
                                            }
                                        },
                                        "id": 2306,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2992:80:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILendingPool_$2428",
                                            "typeString": "contract ILendingPool"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2965:107:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2313,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "3125:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_AaveLiquidityProxy_$2414",
                                                            "typeString": "contract AaveLiquidityProxy"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_AaveLiquidityProxy_$2414",
                                                            "typeString": "contract AaveLiquidityProxy"
                                                        }
                                                    ],
                                                    "id": 2312,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "3117:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2311,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "3117:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2314,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3117:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2316,
                                                        "name": "tokenAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2289,
                                                        "src": "3162:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 2315,
                                                    "name": "remapTokenAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2413,
                                                    "src": "3144:17:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                        "typeString": "function (address) view returns (address)"
                                                    }
                                                },
                                                "id": 2317,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3144:31:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2318,
                                                "name": "tokenAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2291,
                                                "src": "3189:11:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "hexValue": "",
                                                "id": 2319,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3214:2:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                },
                                                "value": ""
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                }
                                            ],
                                            "expression": {
                                                "id": 2308,
                                                "name": "lendingPool",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2301,
                                                "src": "3082:11:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPool_$2428",
                                                    "typeString": "contract ILendingPool"
                                                }
                                            },
                                            "id": 2310,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "flashLoan",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2427,
                                            "src": "3082:21:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                "typeString": "function (address,address,uint256,bytes memory) external"
                                            }
                                        },
                                        "id": 2320,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3082:144:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2321,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3082:144:16"
                                },
                                {
                                    "expression": {
                                        "id": 2327,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 2322,
                                            "name": "_scheduleInvokerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2173,
                                            "src": "3237:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 2325,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3271:1:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 2324,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3263:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 2323,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3263:7:16",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 2326,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3263:10:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "3237:36:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "id": 2328,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3237:36:16"
                                }
                            ]
                        },
                        "functionSelector": "4b8a3529",
                        "id": 2330,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "borrow",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 2293,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2895:8:16"
                        },
                        "parameters": {
                            "id": 2292,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2289,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2330,
                                    "src": "2827:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2288,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2827:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2291,
                                    "mutability": "mutable",
                                    "name": "tokenAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2330,
                                    "src": "2849:19:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2290,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2849:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2826:43:16"
                        },
                        "returnParameters": {
                            "id": 2294,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2908:0:16"
                        },
                        "scope": 2414,
                        "src": "2811:469:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2371,
                            "nodeType": "Block",
                            "src": "3432:387:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                "id": 2347,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2342,
                                                    "name": "_scheduleInvokerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2173,
                                                    "src": "3463:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 2345,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3498:1:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 2344,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "3490:7:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 2343,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3490:7:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2346,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3490:10:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "3463:37:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "416176654c697175696469747950726f78793a206e6f74207363686564756c6564",
                                                "id": 2348,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3514:35:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_091e25acad9e259ffcc1396277458253e424e2c1db6915b1743e2dd448819409",
                                                    "typeString": "literal_string \"AaveLiquidityProxy: not scheduled\""
                                                },
                                                "value": "AaveLiquidityProxy: not scheduled"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_091e25acad9e259ffcc1396277458253e424e2c1db6915b1743e2dd448819409",
                                                    "typeString": "literal_string \"AaveLiquidityProxy: not scheduled\""
                                                }
                                            ],
                                            "id": 2341,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "3442:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2349,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3442:117:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2350,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3442:117:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2353,
                                                        "name": "_reserve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2332,
                                                        "src": "3600:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 2354,
                                                        "name": "_scheduleInvokerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2173,
                                                        "src": "3610:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    },
                                                    {
                                                        "id": 2355,
                                                        "name": "_amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2334,
                                                        "src": "3635:7:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "id": 2352,
                                                    "name": "transfer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1433,
                                                    "src": "3591:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                        "typeString": "function (address,address,uint256) returns (bool)"
                                                    }
                                                },
                                                "id": 2356,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3591:52:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "416176654c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564",
                                                "id": 2357,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3657:48:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_6da286ebe7483edae25a8d452ac7373bfea0a2340ec783fb751f0810767d66e7",
                                                    "typeString": "literal_string \"AaveLiquidityProxy: transfer to invoker failed\""
                                                },
                                                "value": "AaveLiquidityProxy: transfer to invoker failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_6da286ebe7483edae25a8d452ac7373bfea0a2340ec783fb751f0810767d66e7",
                                                    "typeString": "literal_string \"AaveLiquidityProxy: transfer to invoker failed\""
                                                }
                                            ],
                                            "id": 2351,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "3570:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2358,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3570:145:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2359,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3570:145:16"
                                },
                                {
                                    "assignments": [
                                        2361
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2361,
                                            "mutability": "mutable",
                                            "name": "invoker",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2371,
                                            "src": "3726:16:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IInvoker_$1234",
                                                "typeString": "contract IInvoker"
                                            },
                                            "typeName": {
                                                "id": 2360,
                                                "name": "IInvoker",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 1234,
                                                "src": "3726:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IInvoker_$1234",
                                                    "typeString": "contract IInvoker"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2365,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2363,
                                                "name": "_scheduleInvokerAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2173,
                                                "src": "3754:23:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "id": 2362,
                                            "name": "IInvoker",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1234,
                                            "src": "3745:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IInvoker_$1234_$",
                                                "typeString": "type(contract IInvoker)"
                                            }
                                        },
                                        "id": 2364,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3745:33:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IInvoker_$1234",
                                            "typeString": "contract IInvoker"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3726:52:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 2366,
                                                "name": "invoker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2361,
                                                "src": "3788:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IInvoker_$1234",
                                                    "typeString": "contract IInvoker"
                                                }
                                            },
                                            "id": 2368,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "invokeCallback",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1197,
                                            "src": "3788:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                                                "typeString": "function () external"
                                            }
                                        },
                                        "id": 2369,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3788:24:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2370,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3788:24:16"
                                }
                            ]
                        },
                        "functionSelector": "ee872558",
                        "id": 2372,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "executeOperation",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2339,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2332,
                                    "mutability": "mutable",
                                    "name": "_reserve",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2372,
                                    "src": "3321:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2331,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3321:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2334,
                                    "mutability": "mutable",
                                    "name": "_amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2372,
                                    "src": "3347:15:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2333,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3347:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2336,
                                    "mutability": "mutable",
                                    "name": "_fee",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2372,
                                    "src": "3372:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2335,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3372:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2338,
                                    "mutability": "mutable",
                                    "name": "_params",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2372,
                                    "src": "3394:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 2337,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3394:5:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3311:111:16"
                        },
                        "returnParameters": {
                            "id": 2340,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3432:0:16"
                        },
                        "scope": 2414,
                        "src": "3286:533:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2394,
                            "nodeType": "Block",
                            "src": "3898:202:16",
                            "statements": [
                                {
                                    "assignments": [
                                        2380
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2380,
                                            "mutability": "mutable",
                                            "name": "core",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2394,
                                            "src": "3908:21:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILendingPoolCore_$2456",
                                                "typeString": "contract ILendingPoolCore"
                                            },
                                            "typeName": {
                                                "id": 2379,
                                                "name": "ILendingPoolCore",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 2456,
                                                "src": "3908:16:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPoolCore_$2456",
                                                    "typeString": "contract ILendingPoolCore"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2386,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                        "id": 2382,
                                                        "name": "_lendingPoolAddressProvider",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2171,
                                                        "src": "3962:27:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446",
                                                            "typeString": "contract ILendingPoolAddressesProvider"
                                                        }
                                                    },
                                                    "id": 2383,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getLendingPoolCore",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2440,
                                                    "src": "3962:46:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_payable_$",
                                                        "typeString": "function () view external returns (address payable)"
                                                    }
                                                },
                                                "id": 2384,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3962:48:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "id": 2381,
                                            "name": "ILendingPoolCore",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2456,
                                            "src": "3932:16:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_ILendingPoolCore_$2456_$",
                                                "typeString": "type(contract ILendingPoolCore)"
                                            }
                                        },
                                        "id": 2385,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3932:88:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILendingPoolCore_$2456",
                                            "typeString": "contract ILendingPoolCore"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3908:112:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2390,
                                                        "name": "tokenAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2374,
                                                        "src": "4079:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 2389,
                                                    "name": "remapTokenAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2413,
                                                    "src": "4061:17:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                        "typeString": "function (address) view returns (address)"
                                                    }
                                                },
                                                "id": 2391,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4061:31:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2387,
                                                "name": "core",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2380,
                                                "src": "4037:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILendingPoolCore_$2456",
                                                    "typeString": "contract ILendingPoolCore"
                                                }
                                            },
                                            "id": 2388,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getReserveIsActive",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2455,
                                            "src": "4037:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                                "typeString": "function (address) view external returns (bool)"
                                            }
                                        },
                                        "id": 2392,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4037:56:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 2378,
                                    "id": 2393,
                                    "nodeType": "Return",
                                    "src": "4030:63:16"
                                }
                            ]
                        },
                        "id": 2395,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isRegistered",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2375,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2374,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2395,
                                    "src": "3847:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2373,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3847:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3846:22:16"
                        },
                        "returnParameters": {
                            "id": 2378,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2377,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2395,
                                    "src": "3892:4:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 2376,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3892:4:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3891:6:16"
                        },
                        "scope": 2414,
                        "src": "3825:275:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 2412,
                            "nodeType": "Block",
                            "src": "4215:87:16",
                            "statements": [
                                {
                                    "expression": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "id": 2407,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 2402,
                                                "name": "tokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2397,
                                                "src": "4232:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "arguments": [
                                                    {
                                                        "hexValue": "31",
                                                        "id": 2405,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4256:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        }
                                                    ],
                                                    "id": 2404,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "4248:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2403,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "4248:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2406,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4248:10:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            "src": "4232:26:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "id": 2409,
                                            "name": "tokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2397,
                                            "src": "4283:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "id": 2410,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "4232:63:16",
                                        "trueExpression": {
                                            "id": 2408,
                                            "name": "ETHER_TOKEN_ADDRESS",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2169,
                                            "src": "4261:19:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 2401,
                                    "id": 2411,
                                    "nodeType": "Return",
                                    "src": "4225:70:16"
                                }
                            ]
                        },
                        "id": 2413,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "remapTokenAddress",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2398,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2397,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2413,
                                    "src": "4133:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2396,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4133:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4132:22:16"
                        },
                        "returnParameters": {
                            "id": 2401,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2400,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2413,
                                    "src": "4202:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2399,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4202:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4201:9:16"
                        },
                        "scope": 2414,
                        "src": "4106:196:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    }
                ],
                "scope": 2415,
                "src": "1054:3250:16"
            }
        ],
        "src": "640:3665:16"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol",
            "exportedSymbols": {
                "AaveLiquidityProxy": [
                    2414
                ],
                "BalanceCarrier": [
                    1464
                ],
                "ExternalCaller": [
                    1563
                ],
                "IERC20": [
                    6165
                ],
                "IInvocationHook": [
                    1170
                ],
                "IInvoker": [
                    1234
                ],
                "ILendingPool": [
                    2428
                ],
                "ILendingPoolAddressesProvider": [
                    2446
                ],
                "ILendingPoolCore": [
                    2456
                ],
                "ILendingPoolParametersProvider": [
                    2466
                ],
                "ILiquidityProxy": [
                    2148
                ],
                "SafeMath": [
                    5584
                ]
            },
            "license": "Apache-2.0"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "^",
                        "0.7",
                        ".0"
                    ]
                },
                "id": 2150,
                "name": "PragmaDirective",
                "src": "640:23:16"
            },
            {
                "attributes": {
                    "SourceUnit": 5585,
                    "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
                    "file": "@openzeppelin/contracts/math/SafeMath.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2151,
                "name": "ImportDirective",
                "src": "665:51:16"
            },
            {
                "attributes": {
                    "SourceUnit": 6166,
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                    "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2152,
                "name": "ImportDirective",
                "src": "717:56:16"
            },
            {
                "attributes": {
                    "SourceUnit": 1465,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
                    "file": "../../common/utils/BalanceCarrier.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2153,
                "name": "ImportDirective",
                "src": "774:47:16"
            },
            {
                "attributes": {
                    "SourceUnit": 1235,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
                    "file": "../../common/invoke/IInvoker.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2154,
                "name": "ImportDirective",
                "src": "822:42:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2149,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
                    "file": "../ILiquidityProxy.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2155,
                "name": "ImportDirective",
                "src": "865:32:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2447,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolAddressesProvider.sol",
                    "file": "./ILendingPoolAddressesProvider.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2156,
                "name": "ImportDirective",
                "src": "898:45:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2429,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPool.sol",
                    "file": "./ILendingPool.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2157,
                "name": "ImportDirective",
                "src": "944:28:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2457,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolCore.sol",
                    "file": "./ILendingPoolCore.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2158,
                "name": "ImportDirective",
                "src": "973:32:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2467,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolParametersProvider.sol",
                    "file": "./ILendingPoolParametersProvider.sol",
                    "scope": 2415,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 2159,
                "name": "ImportDirective",
                "src": "1006:46:16"
            },
            {
                "attributes": {
                    "abstract": false,
                    "contractDependencies": [
                        1464,
                        1563,
                        2148
                    ],
                    "contractKind": "contract",
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        2414,
                        1464,
                        1563,
                        2148
                    ],
                    "name": "AaveLiquidityProxy",
                    "scope": 2415
                },
                "children": [
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "ILiquidityProxy",
                                    "referencedDeclaration": 2148,
                                    "type": "contract ILiquidityProxy"
                                },
                                "id": 2160,
                                "name": "UserDefinedTypeName",
                                "src": "1085:15:16"
                            }
                        ],
                        "id": 2161,
                        "name": "InheritanceSpecifier",
                        "src": "1085:15:16"
                    },
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "BalanceCarrier",
                                    "referencedDeclaration": 1464,
                                    "type": "contract BalanceCarrier"
                                },
                                "id": 2162,
                                "name": "UserDefinedTypeName",
                                "src": "1102:14:16"
                            }
                        ],
                        "id": 2163,
                        "name": "InheritanceSpecifier",
                        "src": "1102:14:16"
                    },
                    {
                        "children": [
                            {
                                "attributes": {
                                    "name": "SafeMath",
                                    "referencedDeclaration": 5584,
                                    "type": "library SafeMath"
                                },
                                "id": 2164,
                                "name": "UserDefinedTypeName",
                                "src": "1129:8:16"
                            },
                            {
                                "attributes": {
                                    "name": "uint256",
                                    "type": "uint256"
                                },
                                "id": 2165,
                                "name": "ElementaryTypeName",
                                "src": "1142:7:16"
                            }
                        ],
                        "id": 2166,
                        "name": "UsingForDirective",
                        "src": "1123:27:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "ETHER_TOKEN_ADDRESS",
                            "scope": 2414,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 2167,
                                "name": "ElementaryTypeName",
                                "src": "1156:7:16"
                            },
                            {
                                "attributes": {
                                    "hexvalue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "token": "number",
                                    "type": "address payable",
                                    "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                                },
                                "id": 2168,
                                "name": "Literal",
                                "src": "1203:42:16"
                            }
                        ],
                        "id": 2169,
                        "name": "VariableDeclaration",
                        "src": "1156:89:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_lendingPoolAddressProvider",
                            "scope": 2414,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "contract ILendingPoolAddressesProvider",
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "ILendingPoolAddressesProvider",
                                    "referencedDeclaration": 2446,
                                    "type": "contract ILendingPoolAddressesProvider"
                                },
                                "id": 2170,
                                "name": "UserDefinedTypeName",
                                "src": "1252:29:16"
                            }
                        ],
                        "id": 2171,
                        "name": "VariableDeclaration",
                        "src": "1252:66:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_scheduleInvokerAddress",
                            "scope": 2414,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address payable",
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "payable",
                                    "type": "address payable"
                                },
                                "id": 2172,
                                "name": "ElementaryTypeName",
                                "src": "1325:15:16"
                            }
                        ],
                        "id": 2173,
                        "name": "VariableDeclaration",
                        "src": "1325:48:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": true,
                            "kind": "constructor",
                            "name": "",
                            "scope": 2414,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "lendingPoolAddressProvider",
                                            "scope": 2186,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "contract ILendingPoolAddressesProvider",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "ILendingPoolAddressesProvider",
                                                    "referencedDeclaration": 2446,
                                                    "type": "contract ILendingPoolAddressesProvider"
                                                },
                                                "id": 2174,
                                                "name": "UserDefinedTypeName",
                                                "src": "1392:29:16"
                                            }
                                        ],
                                        "id": 2175,
                                        "name": "VariableDeclaration",
                                        "src": "1392:56:16"
                                    }
                                ],
                                "id": 2176,
                                "name": "ParameterList",
                                "src": "1391:58:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2180,
                                "name": "ParameterList",
                                "src": "1498:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 1464,
                                            "type": "type(contract BalanceCarrier)",
                                            "value": "BalanceCarrier"
                                        },
                                        "id": 2177,
                                        "name": "Identifier",
                                        "src": "1458:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 2169,
                                            "type": "address",
                                            "value": "ETHER_TOKEN_ADDRESS"
                                        },
                                        "id": 2178,
                                        "name": "Identifier",
                                        "src": "1473:19:16"
                                    }
                                ],
                                "id": 2179,
                                "name": "ModifierInvocation",
                                "src": "1458:35:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "contract ILendingPoolAddressesProvider"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2171,
                                                            "type": "contract ILendingPoolAddressesProvider",
                                                            "value": "_lendingPoolAddressProvider"
                                                        },
                                                        "id": 2181,
                                                        "name": "Identifier",
                                                        "src": "1508:27:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2175,
                                                            "type": "contract ILendingPoolAddressesProvider",
                                                            "value": "lendingPoolAddressProvider"
                                                        },
                                                        "id": 2182,
                                                        "name": "Identifier",
                                                        "src": "1538:26:16"
                                                    }
                                                ],
                                                "id": 2183,
                                                "name": "Assignment",
                                                "src": "1508:56:16"
                                            }
                                        ],
                                        "id": 2184,
                                        "name": "ExpressionStatement",
                                        "src": "1508:56:16"
                                    }
                                ],
                                "id": 2185,
                                "name": "Block",
                                "src": "1498:73:16"
                            }
                        ],
                        "id": 2186,
                        "name": "FunctionDefinition",
                        "src": "1380:191:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "receive",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "scope": 2414,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2187,
                                "name": "ParameterList",
                                "src": "1584:2:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2188,
                                "name": "ParameterList",
                                "src": "1604:0:16"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2189,
                                "name": "Block",
                                "src": "1604:2:16"
                            }
                        ],
                        "id": 2190,
                        "name": "FunctionDefinition",
                        "src": "1577:29:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "fallback",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "scope": 2414,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2191,
                                "name": "ParameterList",
                                "src": "1620:2:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2192,
                                "name": "ParameterList",
                                "src": "1640:0:16"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2193,
                                "name": "Block",
                                "src": "1640:2:16"
                            }
                        ],
                        "id": 2194,
                        "name": "FunctionDefinition",
                        "src": "1612:30:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2131
                            ],
                            "functionSelector": "680c7b94",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getRepaymentAddress",
                            "scope": 2414,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 2198,
                                "name": "OverrideSpecifier",
                                "src": "1737:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 2207,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2195,
                                                "name": "ElementaryTypeName",
                                                "src": "1677:7:16"
                                            }
                                        ],
                                        "id": 2196,
                                        "name": "VariableDeclaration",
                                        "src": "1677:20:16"
                                    }
                                ],
                                "id": 2197,
                                "name": "ParameterList",
                                "src": "1676:22:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 2207,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2199,
                                                "name": "ElementaryTypeName",
                                                "src": "1763:7:16"
                                            }
                                        ],
                                        "id": 2200,
                                        "name": "VariableDeclaration",
                                        "src": "1763:7:16"
                                    }
                                ],
                                "id": 2201,
                                "name": "ParameterList",
                                "src": "1762:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 2201
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "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": 2440,
                                                            "type": "function () view external returns (address payable)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2171,
                                                                    "type": "contract ILendingPoolAddressesProvider",
                                                                    "value": "_lendingPoolAddressProvider"
                                                                },
                                                                "id": 2202,
                                                                "name": "Identifier",
                                                                "src": "1793:27:16"
                                                            }
                                                        ],
                                                        "id": 2203,
                                                        "name": "MemberAccess",
                                                        "src": "1793:46:16"
                                                    }
                                                ],
                                                "id": 2204,
                                                "name": "FunctionCall",
                                                "src": "1793:48:16"
                                            }
                                        ],
                                        "id": 2205,
                                        "name": "Return",
                                        "src": "1786:55:16"
                                    }
                                ],
                                "id": 2206,
                                "name": "Block",
                                "src": "1776:72:16"
                            }
                        ],
                        "id": 2207,
                        "name": "FunctionDefinition",
                        "src": "1648:200:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2124
                            ],
                            "functionSelector": "c32dc3b6",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getTotalReserve",
                            "scope": 2414,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 2211,
                                "name": "OverrideSpecifier",
                                "src": "1939:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 2245,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2208,
                                                "name": "ElementaryTypeName",
                                                "src": "1879:7:16"
                                            }
                                        ],
                                        "id": 2209,
                                        "name": "VariableDeclaration",
                                        "src": "1879:20:16"
                                    }
                                ],
                                "id": 2210,
                                "name": "ParameterList",
                                "src": "1878:22:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 2245,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 2212,
                                                "name": "ElementaryTypeName",
                                                "src": "1965:7:16"
                                            }
                                        ],
                                        "id": 2213,
                                        "name": "VariableDeclaration",
                                        "src": "1965:7:16"
                                    }
                                ],
                                "id": 2214,
                                "name": "ParameterList",
                                "src": "1964:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                2216
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "core",
                                                    "scope": 2244,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 2215,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1988:7:16"
                                                    }
                                                ],
                                                "id": 2216,
                                                "name": "VariableDeclaration",
                                                "src": "1988:12:16"
                                            },
                                            {
                                                "attributes": {
                                                    "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": 2440,
                                                            "type": "function () view external returns (address payable)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2171,
                                                                    "type": "contract ILendingPoolAddressesProvider",
                                                                    "value": "_lendingPoolAddressProvider"
                                                                },
                                                                "id": 2217,
                                                                "name": "Identifier",
                                                                "src": "2003:27:16"
                                                            }
                                                        ],
                                                        "id": 2218,
                                                        "name": "MemberAccess",
                                                        "src": "2003:46:16"
                                                    }
                                                ],
                                                "id": 2219,
                                                "name": "FunctionCall",
                                                "src": "2003:48:16"
                                            }
                                        ],
                                        "id": 2220,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1988:63:16"
                                    },
                                    {
                                        "attributes": {},
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2395,
                                                            "type": "function (address) view returns (bool)",
                                                            "value": "isRegistered"
                                                        },
                                                        "id": 2221,
                                                        "name": "Identifier",
                                                        "src": "2066:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2209,
                                                            "type": "address",
                                                            "value": "tokenAddress"
                                                        },
                                                        "id": 2222,
                                                        "name": "Identifier",
                                                        "src": "2079:12:16"
                                                    }
                                                ],
                                                "id": 2223,
                                                "name": "FunctionCall",
                                                "src": "2066:26:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "functionReturnParameters": 2214
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "==",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2209,
                                                                                    "type": "address",
                                                                                    "value": "tokenAddress"
                                                                                },
                                                                                "id": 2224,
                                                                                "name": "Identifier",
                                                                                "src": "2131:12:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "address payable",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                                    "typeString": "int_const 1"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(address)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "address"
                                                                                                },
                                                                                                "id": 2225,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "2147:7:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 2226,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "2147:7:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "hexvalue": "31",
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "token": "number",
                                                                                            "type": "int_const 1",
                                                                                            "value": "1"
                                                                                        },
                                                                                        "id": 2227,
                                                                                        "name": "Literal",
                                                                                        "src": "2155:1:16"
                                                                                    }
                                                                                ],
                                                                                "id": 2228,
                                                                                "name": "FunctionCall",
                                                                                "src": "2147:10:16"
                                                                            }
                                                                        ],
                                                                        "id": 2229,
                                                                        "name": "BinaryOperation",
                                                                        "src": "2131:26:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "balance",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2216,
                                                                                    "type": "address",
                                                                                    "value": "core"
                                                                                },
                                                                                "id": 2230,
                                                                                "name": "Identifier",
                                                                                "src": "2180:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 2231,
                                                                        "name": "MemberAccess",
                                                                        "src": "2180:12:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "balanceOf",
                                                                                    "referencedDeclaration": 6104,
                                                                                    "type": "function (address) view external returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "contract IERC20",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 6165,
                                                                                                    "type": "type(contract IERC20)",
                                                                                                    "value": "IERC20"
                                                                                                },
                                                                                                "id": 2232,
                                                                                                "name": "Identifier",
                                                                                                "src": "2215:6:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 2209,
                                                                                                    "type": "address",
                                                                                                    "value": "tokenAddress"
                                                                                                },
                                                                                                "id": 2233,
                                                                                                "name": "Identifier",
                                                                                                "src": "2222:12:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 2234,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "2215:20:16"
                                                                                    }
                                                                                ],
                                                                                "id": 2235,
                                                                                "name": "MemberAccess",
                                                                                "src": "2215:30:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2216,
                                                                                    "type": "address",
                                                                                    "value": "core"
                                                                                },
                                                                                "id": 2236,
                                                                                "name": "Identifier",
                                                                                "src": "2246:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 2237,
                                                                        "name": "FunctionCall",
                                                                        "src": "2215:36:16"
                                                                    }
                                                                ],
                                                                "id": 2238,
                                                                "name": "Conditional",
                                                                "src": "2131:120:16"
                                                            }
                                                        ],
                                                        "id": 2239,
                                                        "name": "Return",
                                                        "src": "2108:143:16"
                                                    }
                                                ],
                                                "id": 2240,
                                                "name": "Block",
                                                "src": "2094:168:16"
                                            }
                                        ],
                                        "id": 2241,
                                        "name": "IfStatement",
                                        "src": "2062:200:16"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 2214
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "hexvalue": "30",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "token": "number",
                                                    "type": "int_const 0",
                                                    "value": "0"
                                                },
                                                "id": 2242,
                                                "name": "Literal",
                                                "src": "2279:1:16"
                                            }
                                        ],
                                        "id": 2243,
                                        "name": "Return",
                                        "src": "2272:8:16"
                                    }
                                ],
                                "id": 2244,
                                "name": "Block",
                                "src": "1978:309:16"
                            }
                        ],
                        "id": 2245,
                        "name": "FunctionDefinition",
                        "src": "1854:433:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2140
                            ],
                            "functionSelector": "aa819057",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getRepaymentAmount",
                            "scope": 2414,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 2251,
                                "name": "OverrideSpecifier",
                                "src": "2402:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 2287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2246,
                                                "name": "ElementaryTypeName",
                                                "src": "2321:7:16"
                                            }
                                        ],
                                        "id": 2247,
                                        "name": "VariableDeclaration",
                                        "src": "2321:20:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAmount",
                                            "scope": 2287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 2248,
                                                "name": "ElementaryTypeName",
                                                "src": "2343:7:16"
                                            }
                                        ],
                                        "id": 2249,
                                        "name": "VariableDeclaration",
                                        "src": "2343:19:16"
                                    }
                                ],
                                "id": 2250,
                                "name": "ParameterList",
                                "src": "2320:43:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 2287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 2252,
                                                "name": "ElementaryTypeName",
                                                "src": "2428:7:16"
                                            }
                                        ],
                                        "id": 2253,
                                        "name": "VariableDeclaration",
                                        "src": "2428:7:16"
                                    }
                                ],
                                "id": 2254,
                                "name": "ParameterList",
                                "src": "2427:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                2256
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "params",
                                                    "scope": 2286,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract ILendingPoolParametersProvider",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "ILendingPoolParametersProvider",
                                                            "referencedDeclaration": 2466,
                                                            "type": "contract ILendingPoolParametersProvider"
                                                        },
                                                        "id": 2255,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "2451:30:16"
                                                    }
                                                ],
                                                "id": 2256,
                                                "name": "VariableDeclaration",
                                                "src": "2451:37:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract ILendingPoolParametersProvider",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2466,
                                                            "type": "type(contract ILendingPoolParametersProvider)",
                                                            "value": "ILendingPoolParametersProvider"
                                                        },
                                                        "id": 2257,
                                                        "name": "Identifier",
                                                        "src": "2491:30:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "getLendingPoolParametersProvider",
                                                                    "referencedDeclaration": 2445,
                                                                    "type": "function () view external returns (address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2171,
                                                                            "type": "contract ILendingPoolAddressesProvider",
                                                                            "value": "_lendingPoolAddressProvider"
                                                                        },
                                                                        "id": 2258,
                                                                        "name": "Identifier",
                                                                        "src": "2535:27:16"
                                                                    }
                                                                ],
                                                                "id": 2259,
                                                                "name": "MemberAccess",
                                                                "src": "2535:60:16"
                                                            }
                                                        ],
                                                        "id": 2260,
                                                        "name": "FunctionCall",
                                                        "src": "2535:62:16"
                                                    }
                                                ],
                                                "id": 2261,
                                                "name": "FunctionCall",
                                                "src": "2491:116:16"
                                            }
                                        ],
                                        "id": 2262,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2451:156:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                2264,
                                                2266
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "totalFeeBips",
                                                    "scope": 2286,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 2263,
                                                        "name": "ElementaryTypeName",
                                                        "src": "2618:7:16"
                                                    }
                                                ],
                                                "id": 2264,
                                                "name": "VariableDeclaration",
                                                "src": "2618:20:16"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "_",
                                                    "scope": 2286,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 2265,
                                                        "name": "ElementaryTypeName",
                                                        "src": "2640:7:16"
                                                    }
                                                ],
                                                "id": 2266,
                                                "name": "VariableDeclaration",
                                                "src": "2640:9:16"
                                            },
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(uint256,uint256)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getFlashLoanFeesInBips",
                                                            "referencedDeclaration": 2465,
                                                            "type": "function () pure external returns (uint256,uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2256,
                                                                    "type": "contract ILendingPoolParametersProvider",
                                                                    "value": "params"
                                                                },
                                                                "id": 2267,
                                                                "name": "Identifier",
                                                                "src": "2653:6:16"
                                                            }
                                                        ],
                                                        "id": 2268,
                                                        "name": "MemberAccess",
                                                        "src": "2653:29:16"
                                                    }
                                                ],
                                                "id": 2269,
                                                "name": "FunctionCall",
                                                "src": "2653:31:16"
                                            }
                                        ],
                                        "id": 2270,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2617:67:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                2272
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "amountFee",
                                                    "scope": 2286,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 2271,
                                                        "name": "ElementaryTypeName",
                                                        "src": "2695:7:16"
                                                    }
                                                ],
                                                "id": 2272,
                                                "name": "VariableDeclaration",
                                                "src": "2695:17:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_10000_by_1",
                                                                    "typeString": "int_const 10000"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "div",
                                                            "referencedDeclaration": 5514,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "mul",
                                                                            "referencedDeclaration": 5497,
                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2249,
                                                                                    "type": "uint256",
                                                                                    "value": "tokenAmount"
                                                                                },
                                                                                "id": 2273,
                                                                                "name": "Identifier",
                                                                                "src": "2715:11:16"
                                                                            }
                                                                        ],
                                                                        "id": 2274,
                                                                        "name": "MemberAccess",
                                                                        "src": "2715:15:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2264,
                                                                            "type": "uint256",
                                                                            "value": "totalFeeBips"
                                                                        },
                                                                        "id": 2275,
                                                                        "name": "Identifier",
                                                                        "src": "2731:12:16"
                                                                    }
                                                                ],
                                                                "id": 2276,
                                                                "name": "FunctionCall",
                                                                "src": "2715:29:16"
                                                            }
                                                        ],
                                                        "id": 2277,
                                                        "name": "MemberAccess",
                                                        "src": "2715:33:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "3130303030",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 10000",
                                                            "value": "10000"
                                                        },
                                                        "id": 2278,
                                                        "name": "Literal",
                                                        "src": "2749:5:16"
                                                    }
                                                ],
                                                "id": 2279,
                                                "name": "FunctionCall",
                                                "src": "2715:40:16"
                                            }
                                        ],
                                        "id": 2280,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2695:60:16"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 2254
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "add",
                                                            "referencedDeclaration": 5417,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2249,
                                                                    "type": "uint256",
                                                                    "value": "tokenAmount"
                                                                },
                                                                "id": 2281,
                                                                "name": "Identifier",
                                                                "src": "2772:11:16"
                                                            }
                                                        ],
                                                        "id": 2282,
                                                        "name": "MemberAccess",
                                                        "src": "2772:15:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2272,
                                                            "type": "uint256",
                                                            "value": "amountFee"
                                                        },
                                                        "id": 2283,
                                                        "name": "Identifier",
                                                        "src": "2788:9:16"
                                                    }
                                                ],
                                                "id": 2284,
                                                "name": "FunctionCall",
                                                "src": "2772:26:16"
                                            }
                                        ],
                                        "id": 2285,
                                        "name": "Return",
                                        "src": "2765:33:16"
                                    }
                                ],
                                "id": 2286,
                                "name": "Block",
                                "src": "2441:364:16"
                            }
                        ],
                        "id": 2287,
                        "name": "FunctionDefinition",
                        "src": "2293:512:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2147
                            ],
                            "functionSelector": "4b8a3529",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "borrow",
                            "scope": 2414,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 2293,
                                "name": "OverrideSpecifier",
                                "src": "2895:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 2330,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2288,
                                                "name": "ElementaryTypeName",
                                                "src": "2827:7:16"
                                            }
                                        ],
                                        "id": 2289,
                                        "name": "VariableDeclaration",
                                        "src": "2827:20:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAmount",
                                            "scope": 2330,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 2290,
                                                "name": "ElementaryTypeName",
                                                "src": "2849:7:16"
                                            }
                                        ],
                                        "id": 2291,
                                        "name": "VariableDeclaration",
                                        "src": "2849:19:16"
                                    }
                                ],
                                "id": 2292,
                                "name": "ParameterList",
                                "src": "2826:43:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2294,
                                "name": "ParameterList",
                                "src": "2908:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address payable"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2173,
                                                            "type": "address payable",
                                                            "value": "_scheduleInvokerAddress"
                                                        },
                                                        "id": 2295,
                                                        "name": "Identifier",
                                                        "src": "2918:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 2296,
                                                                "name": "Identifier",
                                                                "src": "2944:3:16"
                                                            }
                                                        ],
                                                        "id": 2297,
                                                        "name": "MemberAccess",
                                                        "src": "2944:10:16"
                                                    }
                                                ],
                                                "id": 2298,
                                                "name": "Assignment",
                                                "src": "2918:36:16"
                                            }
                                        ],
                                        "id": 2299,
                                        "name": "ExpressionStatement",
                                        "src": "2918:36:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                2301
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "lendingPool",
                                                    "scope": 2329,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract ILendingPool",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "ILendingPool",
                                                            "referencedDeclaration": 2428,
                                                            "type": "contract ILendingPool"
                                                        },
                                                        "id": 2300,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "2965:12:16"
                                                    }
                                                ],
                                                "id": 2301,
                                                "name": "VariableDeclaration",
                                                "src": "2965:24:16"
                                            },
                                            {
                                                "attributes": {
                                                    "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": 2428,
                                                            "type": "type(contract ILendingPool)",
                                                            "value": "ILendingPool"
                                                        },
                                                        "id": 2302,
                                                        "name": "Identifier",
                                                        "src": "2992:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "getLendingPool",
                                                                    "referencedDeclaration": 2435,
                                                                    "type": "function () view external returns (address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2171,
                                                                            "type": "contract ILendingPoolAddressesProvider",
                                                                            "value": "_lendingPoolAddressProvider"
                                                                        },
                                                                        "id": 2303,
                                                                        "name": "Identifier",
                                                                        "src": "3018:27:16"
                                                                    }
                                                                ],
                                                                "id": 2304,
                                                                "name": "MemberAccess",
                                                                "src": "3018:42:16"
                                                            }
                                                        ],
                                                        "id": 2305,
                                                        "name": "FunctionCall",
                                                        "src": "3018:44:16"
                                                    }
                                                ],
                                                "id": 2306,
                                                "name": "FunctionCall",
                                                "src": "2992:80:16"
                                            }
                                        ],
                                        "id": 2307,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2965:107:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                    "typeString": "literal_string \"\""
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "flashLoan",
                                                            "referencedDeclaration": 2427,
                                                            "type": "function (address,address,uint256,bytes memory) external"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2301,
                                                                    "type": "contract ILendingPool",
                                                                    "value": "lendingPool"
                                                                },
                                                                "id": 2308,
                                                                "name": "Identifier",
                                                                "src": "3082:11:16"
                                                            }
                                                        ],
                                                        "id": 2310,
                                                        "name": "MemberAccess",
                                                        "src": "3082:21:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "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$_AaveLiquidityProxy_$2414",
                                                                            "typeString": "contract AaveLiquidityProxy"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 2311,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "3117:7:16"
                                                                    }
                                                                ],
                                                                "id": 2312,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "3117:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract AaveLiquidityProxy",
                                                                    "value": "this"
                                                                },
                                                                "id": 2313,
                                                                "name": "Identifier",
                                                                "src": "3125:4:16"
                                                            }
                                                        ],
                                                        "id": 2314,
                                                        "name": "FunctionCall",
                                                        "src": "3117:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2413,
                                                                    "type": "function (address) view returns (address)",
                                                                    "value": "remapTokenAddress"
                                                                },
                                                                "id": 2315,
                                                                "name": "Identifier",
                                                                "src": "3144:17:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2289,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 2316,
                                                                "name": "Identifier",
                                                                "src": "3162:12:16"
                                                            }
                                                        ],
                                                        "id": 2317,
                                                        "name": "FunctionCall",
                                                        "src": "3144:31:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2291,
                                                            "type": "uint256",
                                                            "value": "tokenAmount"
                                                        },
                                                        "id": 2318,
                                                        "name": "Identifier",
                                                        "src": "3189:11:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"\"",
                                                            "value": ""
                                                        },
                                                        "id": 2319,
                                                        "name": "Literal",
                                                        "src": "3214:2:16"
                                                    }
                                                ],
                                                "id": 2320,
                                                "name": "FunctionCall",
                                                "src": "3082:144:16"
                                            }
                                        ],
                                        "id": 2321,
                                        "name": "ExpressionStatement",
                                        "src": "3082:144:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address payable"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2173,
                                                            "type": "address payable",
                                                            "value": "_scheduleInvokerAddress"
                                                        },
                                                        "id": 2322,
                                                        "name": "Identifier",
                                                        "src": "3237:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 2323,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "3263:7:16"
                                                                    }
                                                                ],
                                                                "id": 2324,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "3263:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 2325,
                                                                "name": "Literal",
                                                                "src": "3271:1:16"
                                                            }
                                                        ],
                                                        "id": 2326,
                                                        "name": "FunctionCall",
                                                        "src": "3263:10:16"
                                                    }
                                                ],
                                                "id": 2327,
                                                "name": "Assignment",
                                                "src": "3237:36:16"
                                            }
                                        ],
                                        "id": 2328,
                                        "name": "ExpressionStatement",
                                        "src": "3237:36:16"
                                    }
                                ],
                                "id": 2329,
                                "name": "Block",
                                "src": "2908:372:16"
                            }
                        ],
                        "id": 2330,
                        "name": "FunctionDefinition",
                        "src": "2811:469:16"
                    },
                    {
                        "attributes": {
                            "functionSelector": "ee872558",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "executeOperation",
                            "scope": 2414,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "_reserve",
                                            "scope": 2372,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2331,
                                                "name": "ElementaryTypeName",
                                                "src": "3321:7:16"
                                            }
                                        ],
                                        "id": 2332,
                                        "name": "VariableDeclaration",
                                        "src": "3321:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "_amount",
                                            "scope": 2372,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 2333,
                                                "name": "ElementaryTypeName",
                                                "src": "3347:7:16"
                                            }
                                        ],
                                        "id": 2334,
                                        "name": "VariableDeclaration",
                                        "src": "3347:15:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "_fee",
                                            "scope": 2372,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 2335,
                                                "name": "ElementaryTypeName",
                                                "src": "3372:7:16"
                                            }
                                        ],
                                        "id": 2336,
                                        "name": "VariableDeclaration",
                                        "src": "3372:12:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "_params",
                                            "scope": 2372,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 2337,
                                                "name": "ElementaryTypeName",
                                                "src": "3394:5:16"
                                            }
                                        ],
                                        "id": 2338,
                                        "name": "VariableDeclaration",
                                        "src": "3394:22:16"
                                    }
                                ],
                                "id": 2339,
                                "name": "ParameterList",
                                "src": "3311:111:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 2340,
                                "name": "ParameterList",
                                "src": "3432:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_091e25acad9e259ffcc1396277458253e424e2c1db6915b1743e2dd448819409",
                                                                    "typeString": "literal_string \"AaveLiquidityProxy: not scheduled\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 2341,
                                                        "name": "Identifier",
                                                        "src": "3442:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "!=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2173,
                                                                    "type": "address payable",
                                                                    "value": "_scheduleInvokerAddress"
                                                                },
                                                                "id": 2342,
                                                                "name": "Identifier",
                                                                "src": "3463:23:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "address"
                                                                                },
                                                                                "id": 2343,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "3490:7:16"
                                                                            }
                                                                        ],
                                                                        "id": 2344,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "3490:7:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 2345,
                                                                        "name": "Literal",
                                                                        "src": "3498:1:16"
                                                                    }
                                                                ],
                                                                "id": 2346,
                                                                "name": "FunctionCall",
                                                                "src": "3490:10:16"
                                                            }
                                                        ],
                                                        "id": 2347,
                                                        "name": "BinaryOperation",
                                                        "src": "3463:37:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "416176654c697175696469747950726f78793a206e6f74207363686564756c6564",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"AaveLiquidityProxy: not scheduled\"",
                                                            "value": "AaveLiquidityProxy: not scheduled"
                                                        },
                                                        "id": 2348,
                                                        "name": "Literal",
                                                        "src": "3514:35:16"
                                                    }
                                                ],
                                                "id": 2349,
                                                "name": "FunctionCall",
                                                "src": "3442:117:16"
                                            }
                                        ],
                                        "id": 2350,
                                        "name": "ExpressionStatement",
                                        "src": "3442:117:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_6da286ebe7483edae25a8d452ac7373bfea0a2340ec783fb751f0810767d66e7",
                                                                    "typeString": "literal_string \"AaveLiquidityProxy: transfer to invoker failed\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 2351,
                                                        "name": "Identifier",
                                                        "src": "3570:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "bool",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 1433,
                                                                    "type": "function (address,address,uint256) returns (bool)",
                                                                    "value": "transfer"
                                                                },
                                                                "id": 2352,
                                                                "name": "Identifier",
                                                                "src": "3591:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2332,
                                                                    "type": "address",
                                                                    "value": "_reserve"
                                                                },
                                                                "id": 2353,
                                                                "name": "Identifier",
                                                                "src": "3600:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2173,
                                                                    "type": "address payable",
                                                                    "value": "_scheduleInvokerAddress"
                                                                },
                                                                "id": 2354,
                                                                "name": "Identifier",
                                                                "src": "3610:23:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2334,
                                                                    "type": "uint256",
                                                                    "value": "_amount"
                                                                },
                                                                "id": 2355,
                                                                "name": "Identifier",
                                                                "src": "3635:7:16"
                                                            }
                                                        ],
                                                        "id": 2356,
                                                        "name": "FunctionCall",
                                                        "src": "3591:52:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "416176654c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"AaveLiquidityProxy: transfer to invoker failed\"",
                                                            "value": "AaveLiquidityProxy: transfer to invoker failed"
                                                        },
                                                        "id": 2357,
                                                        "name": "Literal",
                                                        "src": "3657:48:16"
                                                    }
                                                ],
                                                "id": 2358,
                                                "name": "FunctionCall",
                                                "src": "3570:145:16"
                                            }
                                        ],
                                        "id": 2359,
                                        "name": "ExpressionStatement",
                                        "src": "3570:145:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                2361
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "invoker",
                                                    "scope": 2371,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract IInvoker",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IInvoker",
                                                            "referencedDeclaration": 1234,
                                                            "type": "contract IInvoker"
                                                        },
                                                        "id": 2360,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "3726:8:16"
                                                    }
                                                ],
                                                "id": 2361,
                                                "name": "VariableDeclaration",
                                                "src": "3726:16:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract IInvoker",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 1234,
                                                            "type": "type(contract IInvoker)",
                                                            "value": "IInvoker"
                                                        },
                                                        "id": 2362,
                                                        "name": "Identifier",
                                                        "src": "3745:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2173,
                                                            "type": "address payable",
                                                            "value": "_scheduleInvokerAddress"
                                                        },
                                                        "id": 2363,
                                                        "name": "Identifier",
                                                        "src": "3754:23:16"
                                                    }
                                                ],
                                                "id": 2364,
                                                "name": "FunctionCall",
                                                "src": "3745:33:16"
                                            }
                                        ],
                                        "id": 2365,
                                        "name": "VariableDeclarationStatement",
                                        "src": "3726:52:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "invokeCallback",
                                                            "referencedDeclaration": 1197,
                                                            "type": "function () external"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2361,
                                                                    "type": "contract IInvoker",
                                                                    "value": "invoker"
                                                                },
                                                                "id": 2366,
                                                                "name": "Identifier",
                                                                "src": "3788:7:16"
                                                            }
                                                        ],
                                                        "id": 2368,
                                                        "name": "MemberAccess",
                                                        "src": "3788:22:16"
                                                    }
                                                ],
                                                "id": 2369,
                                                "name": "FunctionCall",
                                                "src": "3788:24:16"
                                            }
                                        ],
                                        "id": 2370,
                                        "name": "ExpressionStatement",
                                        "src": "3788:24:16"
                                    }
                                ],
                                "id": 2371,
                                "name": "Block",
                                "src": "3432:387:16"
                            }
                        ],
                        "id": 2372,
                        "name": "FunctionDefinition",
                        "src": "3286:533:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "isRegistered",
                            "scope": 2414,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 2395,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2373,
                                                "name": "ElementaryTypeName",
                                                "src": "3847:7:16"
                                            }
                                        ],
                                        "id": 2374,
                                        "name": "VariableDeclaration",
                                        "src": "3847:20:16"
                                    }
                                ],
                                "id": 2375,
                                "name": "ParameterList",
                                "src": "3846:22:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 2395,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 2376,
                                                "name": "ElementaryTypeName",
                                                "src": "3892:4:16"
                                            }
                                        ],
                                        "id": 2377,
                                        "name": "VariableDeclaration",
                                        "src": "3892:4:16"
                                    }
                                ],
                                "id": 2378,
                                "name": "ParameterList",
                                "src": "3891:6:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                2380
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "core",
                                                    "scope": 2394,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract ILendingPoolCore",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "ILendingPoolCore",
                                                            "referencedDeclaration": 2456,
                                                            "type": "contract ILendingPoolCore"
                                                        },
                                                        "id": 2379,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "3908:16:16"
                                                    }
                                                ],
                                                "id": 2380,
                                                "name": "VariableDeclaration",
                                                "src": "3908:21:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract ILendingPoolCore",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2456,
                                                            "type": "type(contract ILendingPoolCore)",
                                                            "value": "ILendingPoolCore"
                                                        },
                                                        "id": 2381,
                                                        "name": "Identifier",
                                                        "src": "3932:16:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "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": 2440,
                                                                    "type": "function () view external returns (address payable)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2171,
                                                                            "type": "contract ILendingPoolAddressesProvider",
                                                                            "value": "_lendingPoolAddressProvider"
                                                                        },
                                                                        "id": 2382,
                                                                        "name": "Identifier",
                                                                        "src": "3962:27:16"
                                                                    }
                                                                ],
                                                                "id": 2383,
                                                                "name": "MemberAccess",
                                                                "src": "3962:46:16"
                                                            }
                                                        ],
                                                        "id": 2384,
                                                        "name": "FunctionCall",
                                                        "src": "3962:48:16"
                                                    }
                                                ],
                                                "id": 2385,
                                                "name": "FunctionCall",
                                                "src": "3932:88:16"
                                            }
                                        ],
                                        "id": 2386,
                                        "name": "VariableDeclarationStatement",
                                        "src": "3908:112:16"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 2378
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getReserveIsActive",
                                                            "referencedDeclaration": 2455,
                                                            "type": "function (address) view external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2380,
                                                                    "type": "contract ILendingPoolCore",
                                                                    "value": "core"
                                                                },
                                                                "id": 2387,
                                                                "name": "Identifier",
                                                                "src": "4037:4:16"
                                                            }
                                                        ],
                                                        "id": 2388,
                                                        "name": "MemberAccess",
                                                        "src": "4037:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2413,
                                                                    "type": "function (address) view returns (address)",
                                                                    "value": "remapTokenAddress"
                                                                },
                                                                "id": 2389,
                                                                "name": "Identifier",
                                                                "src": "4061:17:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2374,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 2390,
                                                                "name": "Identifier",
                                                                "src": "4079:12:16"
                                                            }
                                                        ],
                                                        "id": 2391,
                                                        "name": "FunctionCall",
                                                        "src": "4061:31:16"
                                                    }
                                                ],
                                                "id": 2392,
                                                "name": "FunctionCall",
                                                "src": "4037:56:16"
                                            }
                                        ],
                                        "id": 2393,
                                        "name": "Return",
                                        "src": "4030:63:16"
                                    }
                                ],
                                "id": 2394,
                                "name": "Block",
                                "src": "3898:202:16"
                            }
                        ],
                        "id": 2395,
                        "name": "FunctionDefinition",
                        "src": "3825:275:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "remapTokenAddress",
                            "scope": 2414,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 2413,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2396,
                                                "name": "ElementaryTypeName",
                                                "src": "4133:7:16"
                                            }
                                        ],
                                        "id": 2397,
                                        "name": "VariableDeclaration",
                                        "src": "4133:20:16"
                                    }
                                ],
                                "id": 2398,
                                "name": "ParameterList",
                                "src": "4132:22:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 2413,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 2399,
                                                "name": "ElementaryTypeName",
                                                "src": "4202:7:16"
                                            }
                                        ],
                                        "id": 2400,
                                        "name": "VariableDeclaration",
                                        "src": "4202:7:16"
                                    }
                                ],
                                "id": 2401,
                                "name": "ParameterList",
                                "src": "4201:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 2401
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2397,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 2402,
                                                                "name": "Identifier",
                                                                "src": "4232:12:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "address"
                                                                                },
                                                                                "id": 2403,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "4248:7:16"
                                                                            }
                                                                        ],
                                                                        "id": 2404,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "4248:7:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "31",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "number",
                                                                            "type": "int_const 1",
                                                                            "value": "1"
                                                                        },
                                                                        "id": 2405,
                                                                        "name": "Literal",
                                                                        "src": "4256:1:16"
                                                                    }
                                                                ],
                                                                "id": 2406,
                                                                "name": "FunctionCall",
                                                                "src": "4248:10:16"
                                                            }
                                                        ],
                                                        "id": 2407,
                                                        "name": "BinaryOperation",
                                                        "src": "4232:26:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2169,
                                                            "type": "address",
                                                            "value": "ETHER_TOKEN_ADDRESS"
                                                        },
                                                        "id": 2408,
                                                        "name": "Identifier",
                                                        "src": "4261:19:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2397,
                                                            "type": "address",
                                                            "value": "tokenAddress"
                                                        },
                                                        "id": 2409,
                                                        "name": "Identifier",
                                                        "src": "4283:12:16"
                                                    }
                                                ],
                                                "id": 2410,
                                                "name": "Conditional",
                                                "src": "4232:63:16"
                                            }
                                        ],
                                        "id": 2411,
                                        "name": "Return",
                                        "src": "4225:70:16"
                                    }
                                ],
                                "id": 2412,
                                "name": "Block",
                                "src": "4215:87:16"
                            }
                        ],
                        "id": 2413,
                        "name": "FunctionDefinition",
                        "src": "4106:196:16"
                    }
                ],
                "id": 2414,
                "name": "ContractDefinition",
                "src": "1054:3250:16"
            }
        ],
        "id": 2415,
        "name": "SourceUnit",
        "src": "640:3665:16"
    },
    "compiler": {
        "name": "solc",
        "version": "0.7.3+commit.9bfce1f6.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.3.3",
    "updatedAt": "2021-02-01T23:13:33.211Z",
    "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
